Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск Последнего Значения По Двум Критериям - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Поиск Последнего Значения По Двум Критериям
book Дата: Вторник, 08.04.2025, 09:39 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 157
Репутация: 8 ±
Замечаний: 0% ±

Excel 2016
Добрый день!
Прошу помочь со следующей задачей.

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

На форуме нашел пример с функцией ИНДЕКС. Но хотелось бы усовершенствовать формулу.
1) Сделать ее само-протягивающейся, т.к. реестр движений ТМЦ будет автоматически пополняться данными с других листов с помощью функции QUERY. Знаю, что формула ИНДЕКС не может быть формулой массива и формулу придется переделать.

2) Убрать необходимость сортировать исходный диапазон по дате. Сейчас этого требует формула
Код
=ИНДЕКС(J$2:J; ПОИСКПОЗ(L7; ЕСЛИ(M7=C$2:C;A$2:A)  ))

Это необязательно, у меня уже используется SORT. Интересно, можно ли так сделать без усложнения формулы.
http://www.excelworld.ru/forum/23-50099-1

Таблица здесь
https://docs.google.com/spreads....sharing

Спасибо.


--
С уважением,
Андрей.


Сообщение отредактировал book - Вторник, 08.04.2025, 09:40
 
Ответить
СообщениеДобрый день!
Прошу помочь со следующей задачей.

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

На форуме нашел пример с функцией ИНДЕКС. Но хотелось бы усовершенствовать формулу.
1) Сделать ее само-протягивающейся, т.к. реестр движений ТМЦ будет автоматически пополняться данными с других листов с помощью функции QUERY. Знаю, что формула ИНДЕКС не может быть формулой массива и формулу придется переделать.

2) Убрать необходимость сортировать исходный диапазон по дате. Сейчас этого требует формула
Код
=ИНДЕКС(J$2:J; ПОИСКПОЗ(L7; ЕСЛИ(M7=C$2:C;A$2:A)  ))

Это необязательно, у меня уже используется SORT. Интересно, можно ли так сделать без усложнения формулы.
http://www.excelworld.ru/forum/23-50099-1

Таблица здесь
https://docs.google.com/spreads....sharing

Спасибо.

Автор - book
Дата добавления - 08.04.2025 в 09:39
Gustav Дата: Вторник, 08.04.2025, 15:27 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2841
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Можно функцию XLOOKUP использовать. Она умеет искать строки от конца к началу (см. ниже последний параметр -1). Кроме того, из нее получаются саморазворачивающиеся формулы, которые вводятся в одну самую верхнюю ячейку диапазона (ячейки под ней должны быть свободны). Для ячейки N2 формула может выглядеть так (ячейки N3 и ниже - очистить!):

[vba]
Код
=ArrayFormula(XLOOKUP(L2:L7 & M2:M7; $A$2:$A$15 & $C$2:$C$15; $E$2:$E$15; "не было поступлений"; 0; -1))
[/vba]

И даже можно без "якорей" $, поскольку ввод формулы производится только в одну ячейку:
[vba]
Код
=ArrayFormula(XLOOKUP(L2:L7 & M2:M7; A2:A15 & C2:C15; E2:E15; "не было поступлений"; 0; -1))
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеМожно функцию XLOOKUP использовать. Она умеет искать строки от конца к началу (см. ниже последний параметр -1). Кроме того, из нее получаются саморазворачивающиеся формулы, которые вводятся в одну самую верхнюю ячейку диапазона (ячейки под ней должны быть свободны). Для ячейки N2 формула может выглядеть так (ячейки N3 и ниже - очистить!):

[vba]
Код
=ArrayFormula(XLOOKUP(L2:L7 & M2:M7; $A$2:$A$15 & $C$2:$C$15; $E$2:$E$15; "не было поступлений"; 0; -1))
[/vba]

И даже можно без "якорей" $, поскольку ввод формулы производится только в одну ячейку:
[vba]
Код
=ArrayFormula(XLOOKUP(L2:L7 & M2:M7; A2:A15 & C2:C15; E2:E15; "не было поступлений"; 0; -1))
[/vba]

Автор - Gustav
Дата добавления - 08.04.2025 в 15:27
book Дата: Среда, 09.04.2025, 19:12 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 157
Репутация: 8 ±
Замечаний: 0% ±

Excel 2016
Gustav, спасибо за отклик.
Верно ли я понял, что функция XLOOKUP ищет только точное соответствие?
В примере на скрин-шоте: 14 декабря швабры уже были в наличии, но формула не находит цену.
К сообщению приложен файл: 5150892.jpg (40.0 Kb)


--
С уважением,
Андрей.
 
Ответить
СообщениеGustav, спасибо за отклик.
Верно ли я понял, что функция XLOOKUP ищет только точное соответствие?
В примере на скрин-шоте: 14 декабря швабры уже были в наличии, но формула не находит цену.

Автор - book
Дата добавления - 09.04.2025 в 19:12
Gustav Дата: Среда, 09.04.2025, 21:50 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2841
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Верно ли я понял, что функция XLOOKUP ищет только точное соответствие?

Не совсем так. Вообще "точность" управляется предпоследним параметром функции:
Цитата
match_mode – [НЕОБЯЗАТЕЛЬНО, по умолчанию 0] – режим поиска совпадения для аргумента search_key.
0 – точное соответствие.
1 – точное соответствие или ближайшее значение, которое больше search_key.
-1 – точное соответствие или ближайшее значение, которое меньше search_key.
2 – совпадение с подстановочным знаком.

Цитата взята из справки функции XLOOKUP: https://support.google.com/docs/answer/12405947?hl=ru

У нас сейчас выставлено 0, и, по идее, вроде бы, для получения желаемого поведения нужно этот 0 заменить на -1, но в данном случае это не спасет (результаты будут не всегда правильные). Почему? Потому что у нас сейчас используются слитые (конкатенацией) массивы из нескольких сцепленных колонок (стандартный приём, часто используемый в Excel c функциями ВПР или ПОИСКПОЗ). При поиске точных совпадений это работает нормально, без вариантов. Но при использовании неточных (предыдущих или последующих) значений, это срабатывает не всегда, поскольку соседние строки в таблице могут относиться к разным номенклатурам и к "швабрам" могут "присоседиться", например, "ведра", что для поиска нежелательно и просто неправильно (можно поисследовать самостоятельно).

Не вдаваясь в некоторые другие подробности, приведу новую формулу для ячейки N2 (на этот раз она, увы, не саморазворачивающаяся):
[vba]
Код
=XLOOKUP(L2; FILTER(A:A;C:C=M2); FILTER(E:E;C:C=M2); "не было поступлений"; -1; -1)
[/vba]
А раз она не саморазворачивающаяся, то ее надо протянуть (скопировать) ниже по столбцу, начиная с ячейки N3.

Ну, а чтобы вернуться вновь к саморазворачивающемуся варианту, можно преобразовать предыдущую формулу в динамически-массивную, используя функцию MAP:
[vba]
Код
=MAP(L2:L8; M2:M8; LAMBDA(_x; _y; XLOOKUP(_x; FILTER(A:A;C:C=_y); FILTER(E:E;C:C=_y); "не было поступлений"; -1; -1)))
[/vba]
Эту формулы, как и самые первые (из сообщения № 2), нужно поместить в одну единственную ячейку N2, очистив ячейки ниже.

[p.s.]Можно обойтись и без XLOOKUP, погрузив все условия в функцию FILTER:[/p.s.]
а) вариант отдельной протягиваемой формулы для каждой ячейки диапазона, начиная с N2:
[vba]
Код
=CHOOSEROWS( IFNA(FILTER(E:E; A:A<=L2; C:C=M2); "не было поступлений"); -1)
[/vba]
CHOOSEROWS(массив, -1) выбирает из массива первую строку с конца, т.е. последнюю строку с начала.

б) динамически-массивный вариант - с одной единственной саморасширяющейся формулой для ячейки N2:
[vba]
Код
=MAP(L2:L8; M2:M8; LAMBDA(_x; _y; CHOOSEROWS( IFNA(FILTER(E:E; A:A<=_x; C:C=_y); "не было поступлений"); -1)))
[/vba]


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Верно ли я понял, что функция XLOOKUP ищет только точное соответствие?

Не совсем так. Вообще "точность" управляется предпоследним параметром функции:
Цитата
match_mode – [НЕОБЯЗАТЕЛЬНО, по умолчанию 0] – режим поиска совпадения для аргумента search_key.
0 – точное соответствие.
1 – точное соответствие или ближайшее значение, которое больше search_key.
-1 – точное соответствие или ближайшее значение, которое меньше search_key.
2 – совпадение с подстановочным знаком.

Цитата взята из справки функции XLOOKUP: https://support.google.com/docs/answer/12405947?hl=ru

У нас сейчас выставлено 0, и, по идее, вроде бы, для получения желаемого поведения нужно этот 0 заменить на -1, но в данном случае это не спасет (результаты будут не всегда правильные). Почему? Потому что у нас сейчас используются слитые (конкатенацией) массивы из нескольких сцепленных колонок (стандартный приём, часто используемый в Excel c функциями ВПР или ПОИСКПОЗ). При поиске точных совпадений это работает нормально, без вариантов. Но при использовании неточных (предыдущих или последующих) значений, это срабатывает не всегда, поскольку соседние строки в таблице могут относиться к разным номенклатурам и к "швабрам" могут "присоседиться", например, "ведра", что для поиска нежелательно и просто неправильно (можно поисследовать самостоятельно).

Не вдаваясь в некоторые другие подробности, приведу новую формулу для ячейки N2 (на этот раз она, увы, не саморазворачивающаяся):
[vba]
Код
=XLOOKUP(L2; FILTER(A:A;C:C=M2); FILTER(E:E;C:C=M2); "не было поступлений"; -1; -1)
[/vba]
А раз она не саморазворачивающаяся, то ее надо протянуть (скопировать) ниже по столбцу, начиная с ячейки N3.

Ну, а чтобы вернуться вновь к саморазворачивающемуся варианту, можно преобразовать предыдущую формулу в динамически-массивную, используя функцию MAP:
[vba]
Код
=MAP(L2:L8; M2:M8; LAMBDA(_x; _y; XLOOKUP(_x; FILTER(A:A;C:C=_y); FILTER(E:E;C:C=_y); "не было поступлений"; -1; -1)))
[/vba]
Эту формулы, как и самые первые (из сообщения № 2), нужно поместить в одну единственную ячейку N2, очистив ячейки ниже.

[p.s.]Можно обойтись и без XLOOKUP, погрузив все условия в функцию FILTER:[/p.s.]
а) вариант отдельной протягиваемой формулы для каждой ячейки диапазона, начиная с N2:
[vba]
Код
=CHOOSEROWS( IFNA(FILTER(E:E; A:A<=L2; C:C=M2); "не было поступлений"); -1)
[/vba]
CHOOSEROWS(массив, -1) выбирает из массива первую строку с конца, т.е. последнюю строку с начала.

б) динамически-массивный вариант - с одной единственной саморасширяющейся формулой для ячейки N2:
[vba]
Код
=MAP(L2:L8; M2:M8; LAMBDA(_x; _y; CHOOSEROWS( IFNA(FILTER(E:E; A:A<=_x; C:C=_y); "не было поступлений"); -1)))
[/vba]

Автор - Gustav
Дата добавления - 09.04.2025 в 21:50
book Дата: Четверг, 10.04.2025, 12:44 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 157
Репутация: 8 ±
Замечаний: 0% ±

Excel 2016
Gustav, большое спасибо!
Не только за два варианта формулы, но и за подробные объяснения.

К сожалению, у меня не получилось применить эти формулы. Все варианты берут первое значение цены. Необходимо выводить последнюю цену, если в течение дня она менялась.
В примере – это цена швабры на 2 марта.

Подскажите, пожалуйста, в чем тут дело?


--
С уважением,
Андрей.
 
Ответить
СообщениеGustav, большое спасибо!
Не только за два варианта формулы, но и за подробные объяснения.

К сожалению, у меня не получилось применить эти формулы. Все варианты берут первое значение цены. Необходимо выводить последнюю цену, если в течение дня она менялась.
В примере – это цена швабры на 2 марта.

Подскажите, пожалуйста, в чем тут дело?

Автор - book
Дата добавления - 10.04.2025 в 12:44
Hugo Дата: Четверг, 10.04.2025, 12:56 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3849
Репутация: 812 ±
Замечаний: 0% ±

365
В примере – это цена швабры на 2 марта.
- так я вижу все варианты выводят 51, это и есть последняя цена.
Или у Вас другая цена и другой результат?


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD
 
Ответить
Сообщение
В примере – это цена швабры на 2 марта.
- так я вижу все варианты выводят 51, это и есть последняя цена.
Или у Вас другая цена и другой результат?

Автор - Hugo
Дата добавления - 10.04.2025 в 12:56
Gustav Дата: Четверг, 10.04.2025, 14:25 | Сообщение № 7
Группа: Админы
Ранг: Участник клуба
Сообщений: 2841
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
не получилось применить эти формулы

Я почему-то (уж не знаю почему) с самого начала ориентировался (получается, ошибочно) на колонку E, которая так и озаглавлена "Цена". А Вам, судя по всему, нужна колонка J с заголовком "СредЦенаНарастИтог". Ну, так замените самостоятельно во всех формулах ссылку E:E на J:J. Делов-то!


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
не получилось применить эти формулы

Я почему-то (уж не знаю почему) с самого начала ориентировался (получается, ошибочно) на колонку E, которая так и озаглавлена "Цена". А Вам, судя по всему, нужна колонка J с заголовком "СредЦенаНарастИтог". Ну, так замените самостоятельно во всех формулах ссылку E:E на J:J. Делов-то!

Автор - Gustav
Дата добавления - 10.04.2025 в 14:25
book Дата: Четверг, 10.04.2025, 15:24 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 157
Репутация: 8 ±
Замечаний: 0% ±

Excel 2016
замените самостоятельно во всех формулах ссылку E:E на J:J.

«А ларчик просто открывался!»

Спасибо еще раз!

PS
Какую формулу, на Ваш взгляд, лучше использовать? CHOOSEROWS или ПРОСМОТРX?
Внешне формула с CHOOSEROWS формирует внизу пустые ячейки, а формула с ПРОСМОТРX – выводит «не было поступлений». Это видно в файле по ссылке выше.


--
С уважением,
Андрей.
 
Ответить
Сообщение
замените самостоятельно во всех формулах ссылку E:E на J:J.

«А ларчик просто открывался!»

Спасибо еще раз!

PS
Какую формулу, на Ваш взгляд, лучше использовать? CHOOSEROWS или ПРОСМОТРX?
Внешне формула с CHOOSEROWS формирует внизу пустые ячейки, а формула с ПРОСМОТРX – выводит «не было поступлений». Это видно в файле по ссылке выше.

Автор - book
Дата добавления - 10.04.2025 в 15:24
Gustav Дата: Четверг, 10.04.2025, 16:28 | Сообщение № 9
Группа: Админы
Ранг: Участник клуба
Сообщений: 2841
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Внешне формула с CHOOSEROWS формирует внизу пустые ячейки, а формула с ПРОСМОТРX – выводит «не было поступлений»

Вместо полностью открытых диапазонов, для которых формула вынуждена разворачиваться до самого конца таблицы (что обычно выглядит не очень опрятно):
[vba]
Код
L2:L и M2:M
[/vba]
используйте динамические саморасширяющиеся диапазоны - в зависимости от текущего кол-ва дат, введенных в колонку L:
[vba]
Код
L2:INDEX(L2:L; COUNTA(L2:L)) и M2:INDEX(M2:M; COUNTA(L2:L))
[/vba]

Тогда самую последнюю из предыдущих формул можно записать как:
[vba]
Код
=MAP(L2:INDEX(L2:L;COUNTA(L2:L)); M2:INDEX(M2:M;COUNTA(L2:L)); LAMBDA(_x; _y; CHOOSEROWS( IFNA(FILTER(J:J; A:A<=_x; C:C=_y); "не было поступлений"); -1)))
[/vba]
По мере добавления в колонки L и M новых дат и номенклатуры в колонке N будут автоматически появляться новые значения для них.

ВАЖНО: Понятно, что для корректного разворачивания формулы в колонке N ячейки в колонке L (даты) должны заполняться подряд, без пустых ячеек. А также необходимо исключить наличие случайных записей (например, каких-то поясняющих комментариев) вниз по колонке L до нижнего края таблицы. Иными словами, в диапазоне L2:L должны быть только даты, идущие вниз, начиная с ячейки L2 и без пустых ячеек между ними. Пустые ячейки в этой колонке могут быть только ниже самой последней даты.

Да, всё это немножко громоздко выглядит, но с формулой можно поработать и вынести, например, повторяющееся вычисление COUNTA(L2:L) в отдельную ячейку, скажем, в O1:
[vba]
Код
=COUNTA(L2:L)
[/vba]
и использовать в основной формуле ссылку на нее:
[vba]
Код
=MAP(L2:INDEX(L2:L;O1); M2:INDEX(M2:M;O1); LAMBDA(_x; _y; CHOOSEROWS( IFNA(FILTER(J:J; A:A<=_x; C:C=_y); "не было поступлений"); -1)))
[/vba]

Наконец, можно использовать функцию LET и организовать предварительные вычисления диапазонов прямо внутри формулы, не задействуя соседние вспомогательные ячейки (типа O1):
[vba]
Код
=LET(
_cnt;   COUNTA(L2:L);
_colL;  L2:INDEX(L2:L; _cnt);
_colM;  M2:INDEX(M2:M; _cnt);

MAP(_colL; _colM; LAMBDA(_x; _y; CHOOSEROWS( IFNA(FILTER(J:J; A:A<=_x; C:C=_y); "не было поступлений"); -1)))
)
[/vba]
Эта формула вводится в одну единственную ячейку N2 (прямо копируется отсюда вот в таком буквальном, "сформатированном" переводами строк, виде).


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
Внешне формула с CHOOSEROWS формирует внизу пустые ячейки, а формула с ПРОСМОТРX – выводит «не было поступлений»

Вместо полностью открытых диапазонов, для которых формула вынуждена разворачиваться до самого конца таблицы (что обычно выглядит не очень опрятно):
[vba]
Код
L2:L и M2:M
[/vba]
используйте динамические саморасширяющиеся диапазоны - в зависимости от текущего кол-ва дат, введенных в колонку L:
[vba]
Код
L2:INDEX(L2:L; COUNTA(L2:L)) и M2:INDEX(M2:M; COUNTA(L2:L))
[/vba]

Тогда самую последнюю из предыдущих формул можно записать как:
[vba]
Код
=MAP(L2:INDEX(L2:L;COUNTA(L2:L)); M2:INDEX(M2:M;COUNTA(L2:L)); LAMBDA(_x; _y; CHOOSEROWS( IFNA(FILTER(J:J; A:A<=_x; C:C=_y); "не было поступлений"); -1)))
[/vba]
По мере добавления в колонки L и M новых дат и номенклатуры в колонке N будут автоматически появляться новые значения для них.

ВАЖНО: Понятно, что для корректного разворачивания формулы в колонке N ячейки в колонке L (даты) должны заполняться подряд, без пустых ячеек. А также необходимо исключить наличие случайных записей (например, каких-то поясняющих комментариев) вниз по колонке L до нижнего края таблицы. Иными словами, в диапазоне L2:L должны быть только даты, идущие вниз, начиная с ячейки L2 и без пустых ячеек между ними. Пустые ячейки в этой колонке могут быть только ниже самой последней даты.

Да, всё это немножко громоздко выглядит, но с формулой можно поработать и вынести, например, повторяющееся вычисление COUNTA(L2:L) в отдельную ячейку, скажем, в O1:
[vba]
Код
=COUNTA(L2:L)
[/vba]
и использовать в основной формуле ссылку на нее:
[vba]
Код
=MAP(L2:INDEX(L2:L;O1); M2:INDEX(M2:M;O1); LAMBDA(_x; _y; CHOOSEROWS( IFNA(FILTER(J:J; A:A<=_x; C:C=_y); "не было поступлений"); -1)))
[/vba]

Наконец, можно использовать функцию LET и организовать предварительные вычисления диапазонов прямо внутри формулы, не задействуя соседние вспомогательные ячейки (типа O1):
[vba]
Код
=LET(
_cnt;   COUNTA(L2:L);
_colL;  L2:INDEX(L2:L; _cnt);
_colM;  M2:INDEX(M2:M; _cnt);

MAP(_colL; _colM; LAMBDA(_x; _y; CHOOSEROWS( IFNA(FILTER(J:J; A:A<=_x; C:C=_y); "не было поступлений"); -1)))
)
[/vba]
Эта формула вводится в одну единственную ячейку N2 (прямо копируется отсюда вот в таком буквальном, "сформатированном" переводами строк, виде).

Автор - Gustav
Дата добавления - 10.04.2025 в 16:28
book Дата: Пятница, 11.04.2025, 09:00 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 157
Репутация: 8 ±
Замечаний: 0% ±

Excel 2016
для корректного разворачивания формулы в колонке N ячейки в колонке L (даты) должны заполняться подряд, без пустых ячеек. А также необходимо исключить наличие случайных записей

Да, это понятно. Планирую, что в рабочем файле диапазоны A:J и L:M (расположенные даже, может быть, на разных листах) будут формироваться с помощью функции QUERY и эти условия удастся выполнить.

И все же, подскажите, пожалуйста, в чем разница между CHOOSEROWS и ПРОСМОТРX. В каких случаях, какую формулу лучше использовать?

Спасибо.


--
С уважением,
Андрей.


Сообщение отредактировал book - Пятница, 11.04.2025, 09:02
 
Ответить
Сообщение
для корректного разворачивания формулы в колонке N ячейки в колонке L (даты) должны заполняться подряд, без пустых ячеек. А также необходимо исключить наличие случайных записей

Да, это понятно. Планирую, что в рабочем файле диапазоны A:J и L:M (расположенные даже, может быть, на разных листах) будут формироваться с помощью функции QUERY и эти условия удастся выполнить.

И все же, подскажите, пожалуйста, в чем разница между CHOOSEROWS и ПРОСМОТРX. В каких случаях, какую формулу лучше использовать?

Спасибо.

Автор - book
Дата добавления - 11.04.2025 в 09:00
Gustav Дата: Пятница, 11.04.2025, 12:00 | Сообщение № 11
Группа: Админы
Ранг: Участник клуба
Сообщений: 2841
Репутация: 1194 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
в чем разница между CHOOSEROWS и ПРОСМОТРX. В каких случаях, какую формулу лучше использовать?

ПРОСМОТРX можно использовать при точном или приближенном поиске по одной физической колонке. Или при точном (и только точном!) поиске по одной виртуальной "колонке", полученной конкатенацией нескольких физических колонок.

Лично я предпочитаю использовать FILTER (т.е. вариант с CHOOSEROWS среди формул этой темы). В FILTER можно указать любое кол-во условий, в том числе и явные условия типа ИЛИ. Причем условия указываются в более естественном, что ли, виде: например, мне приятнее смотреть и воспринимать условие A:A<=_x, чем запоминать, в каком параметре ПРОСМОТРX мне нужно поставить -1 для достижения того же эффекта.

О технических (типа быстродействия) характеристиках обоих подходов судить не буду. Во-первых, не знаю и знать особо не хочу, а во-вторых, мне важнее именно ясность формулы.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
в чем разница между CHOOSEROWS и ПРОСМОТРX. В каких случаях, какую формулу лучше использовать?

ПРОСМОТРX можно использовать при точном или приближенном поиске по одной физической колонке. Или при точном (и только точном!) поиске по одной виртуальной "колонке", полученной конкатенацией нескольких физических колонок.

Лично я предпочитаю использовать FILTER (т.е. вариант с CHOOSEROWS среди формул этой темы). В FILTER можно указать любое кол-во условий, в том числе и явные условия типа ИЛИ. Причем условия указываются в более естественном, что ли, виде: например, мне приятнее смотреть и воспринимать условие A:A<=_x, чем запоминать, в каком параметре ПРОСМОТРX мне нужно поставить -1 для достижения того же эффекта.

О технических (типа быстродействия) характеристиках обоих подходов судить не буду. Во-первых, не знаю и знать особо не хочу, а во-вторых, мне важнее именно ясность формулы.

Автор - Gustav
Дата добавления - 11.04.2025 в 12:00
book Дата: Пятница, 11.04.2025, 15:25 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 157
Репутация: 8 ±
Замечаний: 0% ±

Excel 2016
мне важнее именно ясность формулы

Согласен, это важно.

Gustav, еще раз большое спасибо! Ваши ответы мне очень помогли.


--
С уважением,
Андрей.
 
Ответить
Сообщение
мне важнее именно ясность формулы

Согласен, это важно.

Gustav, еще раз большое спасибо! Ваши ответы мне очень помогли.

Автор - book
Дата добавления - 11.04.2025 в 15:25
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!