Excel: найти значение в столбце, затем найти значение даты в этой строке, вернуть значение слева - PullRequest
0 голосов
/ 25 июня 2018

Я ищу формулу (или код), которая находит значение в столбце, затем находит значение в этой строке между датами, когда несколько дат возвращают максимум, а затем возвращает значение влево. Я не могу использовать вспомогательный столбец. Я попробовал несколько вложенных формул индекса / соответствия, но безуспешно ...

Для приведенного ниже примера:

Параметр 1: Найти Вилка в столбце A

Параметр 2: В этой строке (4) найдите дату между: 1 января 18 И 5 января 18

Параметр 3: если в этом диапазоне дат найдено несколько дат, вернуть максимальное значение

Параметр 4: вернуть значение из столбца слева от этой даты

Результат: черный в столбце D.

    A       B       C           D       E           F             G
1   ID      Colour 1Date 1      Colour 2Date 2      Colour 3      Date 3
2   Plate   Green   1-Jan-18    Red     23-Jan-18   L blue        14-Feb-18
3   Bowl    Blue    6-Jan-18    Brown   28-Jan-18   Yellow/Green  19-Feb-18
4   Fork    Yellow  2-Jan-18    Black   4-Jan-18    Turquoise     24-Feb-18
5   Knive   Purple  16-Jan-18   White   7-Feb-18    Maroon        1-Mar-18
6   Spoon   Pink    21-Jan-18   Orange  12-Feb-18   L pink        6-Mar-18

Я надеюсь, что это возможно! Большое спасибо заранее.

1 Ответ

0 голосов
/ 25 июня 2018

Попробуйте это

, где
I10 = ID для поиска
I11 = Мин. Дата (1 января 2018 г.)
I12 = Макс. Дата (5 января 2018 г.)

J10 = =MATCH($I$10,$A$1:$A$6,0) получить номер строки, если идентификатор

=INDEX(INDEX($A$1:$G$6,$J$10,),
       MATCH(
             MAXIFS(INDEX($A$1:$G$6,$J$10,),
                    INDEX($A$1:$G$6,$J$10,),">="&$I$11,
                    INDEX($A$1:$G$6,$J$10,),"<="&$I$12
                   ),
             INDEX($A$1:$G$6,$J$10,),0
             ) - 1
      )

были
INDEX($A$1:$G$6,$J$10,) получить строку данных для идентификатора (повторяется несколько раз в формуле)
MAXIFS(...) получить максимальную дату, соответствующую критериям >= и <=
MATCH(MAXIF(...), [ID data row],0) получить номер столбца для даты, возвращаемой MAXIF
INDEX( [ID data row], MATCH(MAXIF(...), [ID data row],0) - 1) возвращает цвет


Альтернативная формула без MAXIFS

=INDEX(INDEX($A$1:$G$6,$J$10,),
            MATCH(
                  MAX(IFERROR(({0,0,1,0,1,0,1})*(INDEX($A$1:$G$6,$J$10,)>=$I$11)*(INDEX($A$1:$G$6,$J$10,)<=$I$12)*(INDEX($A$1:$G$6,$J$10,)),0)),
            INDEX($A$1:$G$6,$J$10,),0
            ) - 1
      )

Введите как формулу массива (вместе с Ctrl Shift Введите вместо Введите )

...