Страницы: 1
RSS
Замена функции "ПРОСМОТР" для поиска последнего значения
 
Добрый день!

Уважаемые знатоки, помогите пожалуйста, есть ли аналог функции "ПРОСМОТР" в Excel?
Так как данных много, данная функция очень тормозит работу файла.

Пробовал с помощью связи функций "ИНДЕКС" и "ПОИСКПОЗ", но в данном случае находит только первое значение, а нужно именно последнее значение, для того, чтобы знать актуальное состояние устройства (ячейки).

=ИНДЕКС("наличие визы"; ПОИСКПОЗ("код устройства"; "код устройства на 1 листе"; 0)) - возможно надо добавить что-то сюда.

Прикрепил файл... Нужно, чтобы из листа 1 вытягивало последнее значение относительно кода устройства по состоянию наличия визы. В принципе функция "ПРОСМОТР" справляется с задачей, но может у вас будут альтернативные решения, чтобы ускорить работу файла.

Буду очень благодарен, если найдется решение!
 
Добрый день. Попробовал через массив макс+если, но получилось еще дольше. Попробовал через доп столбец, что бы отдельно обозначить последнюю строку по каждому коду устройства, через счетесли, но получилось еще дольше.
Сводная быстро покажит последнюю строку(макс.номер) и лишний  раз пересчитываться не будет как формула. На листе 2 решение через два ВПР.
Вроде работает быстро, но будет ли удобно через сводную, вот вопрос.  
Не перестаю удивляться возможностям excel и VBA.
 
Shama, отличное решение! Спасибо Вам!

Хотел спросить, можно ли заменить это:
Цитата
Shama написал:
массив макс+если, но получилось еще дольше.
формулой "АГРЕГАТ"? Если выбрать наибольшее значение по условию?

Просто данные очень часто меняются, и, если не ошибаюсь, в сводной таблице нужно периодически обновлять информацию...
Извините, если глупые вопросы, я недавно начал работать с Excel, и знакомлюсь со всеми функциями.
 
Можно попробовать, но вроде она работает также как формула массива, т.е. долго на больших таблицах)
И вообще - думаю самый простой и быстрый способ решить Вашу задачу - перевернуть таблицу на листе 1(сортировкой по №), а во второй воспользоваться обычной формулой ВПР, зная, что она возьмет первое найденное значение(которое, после сортировки, уже будет под последним номером).
Не перестаю удивляться возможностям excel и VBA.
 
Цитата
Marat B. написал:
есть ли аналог функции "ПРОСМОТР" в Excel?
Если Вы счастливый обладатель актуальной версии Офиса-365, то почитайте эту статью о новой функции ПРОСМОТРX() Функция ПРОСМОТРX - наследник ВПР
А в этой статье Самый быстрый ВПР производится сравнение разных вариантов поиска данных, из которых ПРОСМОТР() показывает не самые плохие результаты
 
1Marat B., Какая версия Excel?
При наличии МAXIFS можно найти максимальный порядковый номер и по нему наличие визы. Как правило встроенные работают быстрее, чем массивные.

2 Все так стремятся все сделать в одной формуле, а сделайте доп. столбец с признаком последнего значения.
По вопросам из тем форума, личку не читаю.
 
БМВ, добрый день!

1. Версия 2016, но именно функции "МАКСЕСЛИ" и "МИНЕСЛИ" отсутствуют. Как я понял, они есть в версиях Excel-365 и MS 2019
А так эти функции очень бы помогли, да)

2. Крутое решение!!! Большое спасибо! Насчет доп. столбца согласен, это никак не помешает, в любой момент могу скрыть.
Единственное хотел задать вопрос. Как я понял, в функции реагирует на последнее значение "да" в строках, то есть итог либо "да", либо "нет".
Бывают случаи, когда необходим еще один вариант, когда помимо "да/нет" допустим "нет данных". В таком случае можно ли добавить доп. параметры в эту функцию?
Изменено: Marat B. - 15.01.2021 11:44:50
 
Я не посомтрел что было с просмотром, так у вас тормоз был не в самом принципе а в указании целого столбца, замена на
=IFERROR(LOOKUP(2;1/(Таблица1[Код устройства]=[@[Код устройства]]);Таблица1[Наличие визы]); "нет")
ускоряет
все в файле и это и модернизированный с доп столбцом.
Изменено: БМВ - 15.01.2021 12:37:14
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо огромное!

Извините, что поздно пишу)) Второй вариант очень помог, т.е. замена на именованный диапазон (если он так называется) в функции ПРОСМОТР.
Первый вариант тоже отлично работает, спасибо!
 
БМВ,  можете помочь с еще одним вопросом по данной формуле?
Цитата
БМВ написал: =IFERROR(LOOKUP(2;1/(Таблица1[Код устройства]=[@[Код устройства]]);Таблица1[Наличие визы]); "нет")
Что делать, когда будут пустые значения в столбце "Наличие визы"? Я нашел решение, когда Просматриваемый вектор и Вектор результатов берутся из одного диапазона.
Пример:
Код
=ПРОСМОТР(2;1/(B2:M2<>"");B2:M2)

В нашем же лучше они идут из разных диапазонов. Что нужно сделать в таком случае? Куда необходимо вставить значение <>"" ?

Прикрепил файл по вашему примеру с пустыми значениями в конце. Спасибо.
 
Marat B., Не понял вопроса. Вам нужно игнорировать строки которые не имеют значений?
По вопросам из тем форума, личку не читаю.
 
БМВ, именно так. Необходимо, чтобы формула выдавала последнее непустое (ненулевое) значение.

На данный момент функция возвращает значение "0", если ячейка пустая. То есть, если строка не имеет значение, формула должна взять последнюю непустую ячейку.
 
=IFERROR(LOOKUP(2;1/(Таблица1[Код устройства]=[@[Код устройства]])/(Таблица1[Наличие визы]<>"");Таблица1[Наличие визы]); "нет")
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх