Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.07.2015, 15:40   #41
svsh2016
Форумчанин
 
Регистрация: 16.06.2015
Сообщений: 100
По умолчанию

Добрый день,имеется какое-то недопонимание.Когда утром я посмотрел тему,у вас был один текст макроса,затем вы изменили свой текст макроса,и текст макроса уважаемого модератора.Я также менял текст макросов(и вашего и своего).
Если я правильно вас понимаю окончательный текст вашего макроса:

Код:
 Function FirstNonEmpty34_1(rng As Range)
Dim x As Range: Set x = rng.Find("*", rng.Cells(1, 1).Offset(rng.Count - 1))
    If x Is Nothing Then FirstNotEmpty = "No" Else FirstNotEmpty = x.Value
End Function
з
Окончательный текст моего макроса:
Код:
Function First5_1(r As Range)
Dim i&, s$
Application.Volatile
If IsEmpty(r.Range("A1")) Then
   s = Left(r.Range("A1").Address, InStrRev(r.Range("A1").Address, "$") - 1)
   i = r.Range("A1").End(xlDown).Row
  If i > r.Rows(1).Row + r.Rows.Count - 1 Then
    First5_1 = CVErr(xlErrNA)
  Else
    First5_1 = Range(s & i)
  End If
ElseIf Not IsEmpty(r.Range("A1")) Then
   First5_1 = r.Range("A1").Value
End If
End Function
Я печатаю на планшете (яблоко),файл приложить не могу.
Если диапазон
A1:A20 пустой ,мой макрос выдаст ,также как функция массива Индекс #НД, ваша функция выдает другой результат.Предыдущий вариант First5 выдавал p,-в вашем примере,с этим я согласен.Я считаю,что пользовательская функция должна работать аналогично функции массива Индекс,в правильности функции массива сомнений нет.
svsh2016 вне форума
Старый 07.07.2015, 15:59   #42
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Я считаю,что пользовательская функция должна работать аналогично функции массива Индекс,в правильности функции массива сомнений нет.
А я считаю, что функция должна работать не как "что-то", а правильно. Не знаю, как у автора вопроса (кстати, где он?), а у меня есть вопросы как к формуле, так и к Вашему макросу.
По большому счету, нужно предполагать любой возможный вариант заполнения ячеек диапазона и в любом случае обрабатывать его корректно, чего не делает Ваша функция и, следовательно, массивная формула, т. е. и то и другое требует доработки (не допускать возникновение ошибки и исключить неправильный результат). К тому же, согласитесь, что Ваша функция еще и более громоздкая.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 15.10.2015, 11:39   #43
DenOll
Новичок
Джуниор
 
Регистрация: 15.10.2015
Сообщений: 4
По умолчанию

IgorGO. У меня задача практически такая же как рассматривалась в данной теме, но только наоборот. Мне нужно найти не первую, а последнюю ячейку в массиве. Подскажите, пожалуйста, есть ли какой-то способ применить представленную Вами формулу но таким образом, что бы поиск осуществлялся с конца массива?
DenOll вне форума
Старый 15.10.2015, 12:27   #44
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
=ЕСЛИ(СЧЁТЗ(B3:B20)=0;"Нет данных";ИНДЕКС(B:B;МАКС(ЕСЛИ(НЕ(ЕПУСТО(B3:B20));СТРОКА(B3:B20)))))
формула вернет значение из последней НЕ ПУСТОЙ ячейки в диапазоне В3:В20, или Нет данных, если все ячейки пустые.
это формула массива (завершаете ввод формулы не Enter, а Ctrl+Shift+Enter)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 15.10.2015, 12:45   #45
DenOll
Новичок
Джуниор
 
Регистрация: 15.10.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
=ЕСЛИ(СЧЁТЗ(B3:B20)=0;"Нет данных";ИНДЕКС(B:B;МАКС(ЕСЛИ(НЕ(ЕПУСТО(B3:B20));СТРОКА(B3:B20)))))
формула вернет значение из последней НЕ ПУСТОЙ ячейки в диапазоне В3:В20, или Нет данных, если все ячейки пустые.
это формула массива (завершаете ввод формулы не Enter, а Ctrl+Shift+Enter)
А если у меня диапазон B2:R2, то мне нужно в формуле подменить СТРОКА() на СТОЛБЕЦ()? Или нужно еще что-то заменить что бы функция отработала корректно?
DenOll вне форума
Старый 15.10.2015, 12:56   #46
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

В:В заменить на 2:2
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 15.10.2015, 16:08   #47
DenOll
Новичок
Джуниор
 
Регистрация: 15.10.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
В:В заменить на 2:2
Извините, что дергаю...
Но, к сожалению, у меня не выходит применить эту формул. Выводит результат "0".
Вот сама функция: =ЕСЛИ(СЧЁТЗ(E4:AI4)=0;"Нет данных";ИНДЕКС(2:2;МАКС(ЕСЛИ(НЕ(ЕПУ СТО(E4:AI4));СТОЛБЕЦ(E4:AI4)))))

Пробовал использовать как СТОЛБЕЦ() так и СТРОКА() результат одинаковый - "0".

При этом Ваша функция для отображения первой непустой работает отлично, а вот с отображением последней что-то никак...

Может сможете подсказать, что делаю не так?
За ранее очень признателен.
DenOll вне форума
Старый 15.10.2015, 16:19   #48
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

проверяете значения в диапазоне: E4:AI4 (в 4-й строке)
а значение берете из строки 2 ИНДЕКС(2:2;...
видимо, в строке 2 над последней не пустой в E4:AI4 ничего нет
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 15.10.2015 в 16:21.
IgorGO вне форума
Старый 15.10.2015, 16:53   #49
DenOll
Новичок
Джуниор
 
Регистрация: 15.10.2015
Сообщений: 4
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
проверяете значения в диапазоне: E4:AI4 (в 4-й строке)
а значение берете из строки 2 ИНДЕКС(2:2;...
видимо, в строке 2 над последней не пустой в E4:AI4 ничего нет
Большое, человеческое СПАСИБО!
DenOll вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать ссылку на последнюю непустую ячейку в обновляемом столбце SVGuss Microsoft Office Excel 34 19.02.2013 16:12
в строке удалить первую и последнюю буквы,только записать в виде программы и тестового примера в паскаль!!! rfnthbyf Паскаль, Turbo Pascal, PascalABC.NET 9 14.02.2012 21:16
Найти и выделить по выделенной строке диапазон с такой строкой на другом листе (Excel 2003) vfv Microsoft Office Excel 8 10.03.2010 09:30
Копирование данных на первую пустую ячейку kzld Microsoft Office Excel 8 15.07.2009 14:06
как найти первую заполненную ячейку в диапазоне Bezdar Microsoft Office Excel 3 19.02.2009 11:59