Страницы: 1 2 След.
RSS
Поиск ближайшей даты по условиям, Формула массива
 
Всем привет!
Есть формула массива (представлена в файле). У меня не получилось ее усовершенствовать для номенклатурного поиска. Возможно кто-то из здешних смог бы с этим помочь?
Заранее благодарен
 
Отредактировал сообщение.
 
Цитата
olkuzn написал:
формула массива
Код
=ИНДЕКС($I$1:$I$10;ПОИСКПОЗ(МИН(ЕСЛИ($H$1:$H$10=$B$3;$G$1:$G$10))&$B$3;$G$1:$G$10&$H$1:$H$10;))
=ИНДЕКС($I$1:$I$10;ПРОСМОТР(2;1/(МИН(ЕСЛИ($H$1:$H$10=$B$3;$G$1:$G$10))&$B$3=$G$1:$G$10&$H$1:$H$10);СТРОКА($I$1:$I$10)))
Изменено: artyrH - 19.11.2019 18:55:04
 
Может такая формула
Код
AGGREGATE(15;6;ROW($1:$10)/(H$2:H$6=B$3)/(ABS(G2-B$2)=AGGREGATE(15;6;(ABS(G$2:G$6-B$2))*K2/($H$2:$H$6=B3);1));1)
 
artyrH, Ваша формула работает до первого найденного аналога.
Т.е. если на дату будет несколько аналогов, формула вернет только одно из значений
 
jakim, немного не понял логики формулы. И она не сработала
 
olkuzn, по моему мои формулы не подходят вообще.
вы  пример расширили бы до нескольких вариантов и желаемый вариант по конкретнее бы. а то вот это не понятно:
Цитата
olkuzn написал:
вернет только одно из значений
 
Изменено: artyrH - 20.11.2019 06:56:12
 
Цитата
olkuzn написал:
Т.е. если на дату будет несколько аналогов,
Это в примере покажите, а пока так, для случая отсортированных данных
=LOOKUP(2;1/(H2:H6=B3)/(G2:G6<=B2);I2:I6)
и массивная для не отсортированных
=INDEX(I:I;MAX((G2:G6<=B2)*(H2:H6=B3)*ROW(G2:G6)))
По вопросам из тем форума, личку не читаю.
 
Цитата
artyrH написал:
вы  пример расширили бы до нескольких вариантов и желаемый вариант по конкретнее бы.
В файле расширил пример
 
olkuzn, почему просто не показать в примере желаемый результат, а не писать "обратите внимание..." ??

если правильно понял то в В6 и протянуть вниз...
не будут отражаться одинаковые цены - они будут один раз без повторений
Код
=ЕСЛИОШИБКА(ИНДЕКС($I$2:$I$6;ПОИСКПОЗ(1;ИНДЕКС((СЧЁТЕСЛИ($B$5:B5;$I$2:$I$6)=0)/(($B$2+1>=$G$2:$G$6)*($G$2:$G$6>=$B$2-1));0);0));"")
Изменено: Mershik - 22.11.2019 12:13:44 (внес в формулу поправку)
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
почему просто не показать в примере желаемый результат
Потому что выше в файле был просто желаемый результат и попросили пояснить детальнее, т.к. результат не помог.
 
Цитата
Mershik написал:
не будут отражаться одинаковые цены - они будут один раз без повторений
не обязательно.
Но особого значения это не имеет, т.к. с той колонки просто достается цифра.
 
olkuzn,
Цитата
olkuzn написал:
Но особого значения это не имеет, т.к. с той колонки просто достается цифра.
не знаю к чему это так как я писал
Цитата
Mershik написал:
они будут один раз без повторений
это касалось предложенного мной решения.
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
это касалось предложенного мной решения.
У вас формула выводит 627,16.
Зачем?
В принципе не понял как ваш результат применим к данной задаче. И формула не метчит номенклатуру
Изменено: olkuzn - 22.11.2019 12:33:18
 
olkuzn,
Цитата
olkuzn написал:
выводит 627,16.
так как соответствует дата 04 числа т.е. выводит все суммы (разные) соответствующее дате указанной  в В2 +-1 день
Не бойтесь совершенства. Вам его не достичь.
 
"Обратите внимание, что если G6 будет равен 04.01.2018 или 06.01.2018, то выводимых значений должно быть два: 627,17 и 627,18"
а если в данных будет еще и 05.01.2018 тогда три суммы выводить?
эт я к чему пока вводные плавающие и вы их постоянно подкидываете нормального решения не получите, подумайте хорошо и уже определитесь что надо может вообще нужно выбрать минимум по сумме из трех ближайших дат
Лень двигатель прогресса, доказано!!!
 
Цитата
Сергей написал:
а если в данных будет еще и 05.01.2018 тогда три суммы выводить?эт я к чему пока вводные плавающие и вы их постоянно подкидываете нормального решения не получите, подумайте хорошо и уже определитесь что надо может вообще нужно выбрать минимум по сумме из трех ближайших дат
Выводимых может быть около 150-200 значений. Формула, которую я вложил в файл, выдает правильные результат по поиску значения на ближайшую дату. Но она не сопоставляет номенклатуру.
Код
=ЕСЛИОШИБКА(ИНДЕКС($I$1:$I$2001;НАИМЕНЬШИЙ(ЕСЛИ(ABS($G$2:$G$2001-B$2)=МИН(ABS($G$2:$G$2001-B$2));СТРОКА($G$2:$G$2001));СТРОКА($F1)));"")
Условно мне необходимо, чтобы эта формула в данном примере вывела мне Дизель 95, а не привязывалась исключительно к ближайшей дате.
 
olkuzn, ладно еще раз попробую вдруг получится покажите исходные данные и рядом без Ваших формул и без Ваших стараний
Цитата
Mershik написал:
желаемый результат,
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
olkuzn написал:
Условно мне необходимо, чтобы эта формула в данном примере вывела мне Дизель 95
Код
=ЕСЛИОШИБКА(ИНДЕКС($I$1:$I$2001;НАИМЕНЬШИЙ(ЕСЛИ(ABS($G$2:$G$2001-B$2)=МИН(ABS($G$2:$G$2001-B$2))*($H$2:$H$2001=$B$3);СТРОКА($G$2:$G$2001));СТРОКА($F1)));"")
Лень двигатель прогресса, доказано!!!
 
Цитата
olkuzn написал:
Условно мне необходимо, чтобы эта формула в данном примере вывела мне Дизель 95, а не привязывалась исключительно к ближайшей дате.
Цитата
olkuzn написал:
Поиск ближайшей даты по условиям,
Ничего странного нет?

Вам написали
Цитата
Mershik написал:
почему просто не показать в примере желаемый результат
а перед этим
Цитата
БМВ написал:
Это в примере покажите,
Вы продолжайте в том же духе, результат получите когда углеводородные ресурсы закончатся.
По вопросам из тем форума, личку не читаю.
 
olkuzn, ура я понял что такое
Цитата
olkuzn написал:
не сопоставляет номенклатуру.
Цитата
olkuzn написал:
не метчит номенклатуру
тогда так
Код
=ЕСЛИОШИБКА(ИНДЕКС($I$2:$I$6;ПОИСКПОЗ(1;ИНДЕКС((СЧЁТЕСЛИ($B$5:B5;$I$2:$I$6)=0)/(($B$2+1>=$G$2:$G$6)*($G$2:$G$6>=$B$2-1)*($H$2:$H$6=$B$3));0);0));"")
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
тогда так
Сделал, как просили в файле ниже

Цитата
Mershik написал:
=ЕСЛИОШИБКА(ИНДЕКС($I$2:$I$6;ПОИСКПОЗ(1;ИНДЕКС((СЧЁТЕСЛИ($B$5:B5;$I$2:$I$6)=0)/(($B$2+1>=$G$2:$G$6)*($G$2:$G$6>=$B$2-1)*($H$2:$H$6=$B$3));0);0));"")
Мне кажется, что после того, как формула находит 1-ю позицию, дальше не ищет
 
Так?
=IFERROR(INDEX(D:D;SMALL(IF(($E$2:$E$9=$B$3)*(($D$2:$D$9=MAX(IF(($D$2:$D$9<$B$2)*($E$2:$E$9=$B$3);$D$2:$D$9)))+($D$2:$D$9=MIN(IF(($D$2:$D$9>$B$2)*($E$2:$E$9=$B$3);$D$2:$D$9))));ROW($D$2:$D$9));ROW(A1)));"")
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Так?
Формула достает минимальное и максимальное значение в месяце, а не ближайшее
 
olkuzn, Докажите!!!
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Докажите!!!
пожалуйста

Уже сам модифицировал формулу. Всем спасибо за помощь
Вот она, если кому интересно.
Код
=ЕСЛИОШИБКА(ИНДЕКС($I$1:$I$2001;НАИМЕНЬШИЙ(ЕСЛИ(($H$2:$H$2001=$B$3)*(ABS($G$2:$G$2001-B$2)=МИН(ABS($G$2:$G$2001-B$2)));СТРОКА($G$2:$G$2001));СТРОКА($F1)));"")
Изменено: olkuzn - 22.11.2019 14:07:44
 
.
 
Цитата
olkuzn написал:
Уже сам модифицировал формулу.
ха ха ха это было час назад
Цитата
Сергей написал:
Код ? 1=ЕСЛИОШИБКА(ИНДЕКС($I$1:$I$2001;НАИМЕНЬШИЙ(ЕСЛИ(ABS($G$2:$G$2001-B$2)=МИН(ABS($G$2:$G$2001-B$2))*($H$2:$H$2001=$B$3);СТРОКА($G$2:$G$2001));СТРОКА($F1)));"")
Лень двигатель прогресса, доказано!!!
 
Цитата
Сергей написал:
ха ха ха это было час назад
Да, к стати, чет не заметил. Спасибо)
 
Цитата
Сергей написал:
Сергей  написал:Код ? 1=ЕСЛИОШИБКА(ИНДЕКС($I$1:$I$2001;НАИМЕНЬШИЙ(ЕСЛИ(ABS($G$2:$G$2001-B$2)=МИН(ABS($G$2:$G$2001-B$2))*($H$2:$H$2001=$B$3);СТРОКА($G$2:$G$2001));СТРОКА($F1)));"")
Сергей, в формуле есть проблема. Если ближайшая дата и дата сопоставимости по номенклатуре разные, то формула вернет ошибку
Страницы: 1 2 След.
Наверх