Страницы: 1
RSS
Найти номер максимальной строки содержащей значение (альтернативной формулой)
 
Всем доброго времени суток!
Чтобы найти номер максимальной строки, в которой содержится искомое значение, я сейчас использую формулу (понятно, что эта формула массива)
Код
=МАКС(ЕСЛИ(E:E="Какоетослово";СТРОКА(E:E)))

Вопрос такой, не сильно ли эта формула грузит эксель и можно ли ее заменить на другую формулу, которая бы делала то же самое, но была бы менее требовательной к ресурсам.

Файл не прилагаю, т.к. это может быть абсолютной любой файл в котором в пределах одного столбца на определенном листе находятся значения (некоторые ячейки заполнены, некоторые нет, значений ошибок в этом столбце нет)
Изменено: Konstantin Zhi - 19.02.2019 19:54:15
 
Самое первое - не стоит указывать целый столбец, уже лишняя нагрузка.
Сравните с этой
=ПРОСМОТР(2;1/(E1:E10="Какоетослово");СТРОКА(E1:E10))
и сами определите, какая из них быстрее
 
Цитата
vikttur написал: не стоит указывать целый столбец
Согласен Вами на все 100%, но делая так я закрываю проблему того, что пользователь вставить строку, над той, которая сейчас первая...
Соответственно, ищется альтернативное решение, которое бы это учитывало. Советовать запретить пользователю не вставлять строку - можно, но я, все равно, не смогу полностью запретить.
Изменено: Konstantin Zhi - 19.02.2019 21:18:19
 
так как формула предложенная vikttur и не сильно сложнее то её, единственное , что или диапазон с разумным запасом, или добавить автоопределение диапазона, используя столбец без проколов как опорный например так E1:INDEX(E:E;counta(A:A))
По вопросам из тем форума, личку не читаю.
 
Учитывая это:
Цитата
Konstantin Zhi написал: пользователь вставить строку, над той, которая сейчас первая...
то
ИНДЕКС(E:E;1):ИНДЕК(E:E;СЧЕТЕСЛИ(E:E;"*"))
СЧЕТЕСЛИ не будет весь столбец просчитывать
 
Цитата
vikttur написал:
ИНДЕКС(E:E;1)
это то зачем? Опять приписки. :-)
а вот с этим
Цитата
vikttur написал:
СЧЕТЕСЛИ(E:E;"*")
что-то  я не согласен.
Изменено: БМВ - 19.02.2019 21:28:21
По вопросам из тем форума, личку не читаю.
 
Пользователь добавляет строку над первой - диапазон смещается.
СЧЕТЕСЛИ умеет определять используемый диапазон, СЧЕТЗ - нет
 
Вить, меня "*" смущает. ведь ни дыры , ни числовые значения не посчитает.
Плюс не знаю что там кто умеет, но  СЧЕТЗ быстрее чем СЧЕТЕСЛИ.  Проверил на 500к строк и 10к формул.
Да про первую строку пропустил, ИНДЕКС тут к месту.
Изменено: БМВ - 19.02.2019 21:49:39
По вопросам из тем форума, личку не читаю.
 
"*" - это да, по задаче нужно смотреть.
Цитата
БМВ написал: СЧЕТЗ быстрее чем СЧЕТЕСЛИ.
Проверил - хорошо. Буду знать )
 
вот так
=ПРОСМОТР(2;1/(ИНДЕКС(E:E;1;1):ИНДЕКС(E:E;1;500)="Какоетослово");СТРОКА(ИНДЕКС(E:E;1;1):ИНДЕКС(E:E;1;500)))
не срабатывает... почему?
ошибка #ССЫЛКА!
тупанул, извиняюсь
все, конечно же, работает
=ПРОСМОТР(2;1/(ИНДЕКС(E:E;1;1):ИНДЕКС(E:E;500;1)="Какоетослово");СТРОКА(ИНДЕКС(E:E;1;1):ИНДЕКС(E:E;500;1)))
Изменено: Konstantin Zhi - 19.02.2019 23:25:58
 
Цитата
Konstantin Zhi написал:
ИНДЕКС(E:E;1;500)="Какоетослово"
Зачем Вы сравниваете эту ячейку, вам нужно сравнивать диапазон. Думаю что диапазон нужно обернуть в скобки. А лучше пошагово посмотрите в какой момент у вас появляется ошибка. Вкладка Формулы--Вычислить формулу. Только диапазон уменьшите до 10 или 5 строк, всё равно понятно будет когда появится ссылка.
Изменено: gling - 19.02.2019 22:51:28
 
Ошибок в формуле нет.
Запутали своими единицами! Вы же столбец 500 указали!
В ИНДЕКС можно не указывать столбец, если диапазон из одного столбца.
 
Цитата
vikttur написал:
Ошибок в формуле нет.
Думаю что это не так, только что обратил внимание ИНДЕКС(E:E;1;500) = это первая ячейка 500 столбца, а столбец Е. Можно или нужно наоборот ИНДЕКС(E:E;500;1) или вообще ИНДЕКС(E:E;1):ИНДЕКС(E:E;500)
Изменено: gling - 19.02.2019 23:16:36
 
Извиняюсь еще раз за тупость
(время позднее и все такое, но это меня не оправдывает)
Спасибо огромное всем, кто ответил в теме по теме!!!
Страницы: 1
Наверх