Получить индекс столбца, соответствующий значению даты в excel

#excel #excel-formula #excel-2003

Вопрос:

Ниже скриншота/формулы я пытаюсь сопоставить значение даты в столбце E с другим столбцом диапазона дат в столбце B. Если найдено, то верните соответствующее значение столбца D.

 FORMULA: ==LOOKUP(E3,$A$3:$B$46,$C$3:$C$46)

Current Output:

FROM    TO      AGE(Years)  INPUT   OUTPUT
7/4/65  10/4/65 0.25        7/4/68  0.25

Expected Output:

FROM    TO      AGE(Years)  INPUT   OUTPUT
7/4/65  10/4/65 0.25        1/4/68  **2.75**
 

ПРИМЕЧАНИЕ: Я использую EXCEL 2003!!!

введите описание изображения здесь

Ответ №1:

Вы должны использовать индекс/соответствие, чтобы получить значение в столбце D, соответствующее позиции соответствия в столбце E:

 =IFERROR(INDEX(D$3:D$46,MATCH(E3,$B$3:$B$46,0)),"No")
 

Однако в соответствии с этим Iferror не был доступен до Excel 2007, поэтому вам придется использовать Iserror или Isna:

 =IF(ISNA(MATCH(D3,$B$3:$B$46,0)),"No",INDEX(C$3:C$46,MATCH(D3,$B$3:$B$46,0)))
 

Для диапазонов дат

Если вы решите использовать Vlookup:

 =VLOOKUP(D3,A$3:C$46,3,TRUE)
 

Или две версии поиска:

 =LOOKUP(D3,A$3:C$46)

=LOOKUP(D3,A$3:A$46,C$3:C$46)
 

все дают одинаковые результаты.

введите описание изображения здесь

Обратите внимание, что я выполняю поиск по столбцу A, и он не дает того же ответа, что и точный поиск по столбцу B. Это связано с тем, что неясно, должно ли 10/4/65 (например) давать 0,25 или 0,5, потому что и то, и другое возможно, поскольку 10/4/65-это конец одного диапазона и начало другого, и я решил перейти ко второму.


Дополнительная задача

Было бы довольно легко сделать это без поиска и просто с помощью функций Excel 2003?

ДА. Если A1 содержит базовую дату (возможно, дату рождения) 4/4/65, это будет выглядеть так:

 =YEAR(D3)-YEAR(A$1) INT((MONTH(D3)-MONTH(A$1)-(DAY(D3)<DAY(A$1)))/3)/4
 

Комментарии:

1. Еще одно изменение условия, вместо добавления » НЕТ » я хочу проверить, находится ли дата ввода в пределах диапазона, и получить значение индекса. Я попытался добавить условие =ЕСЛИ(И(E3>A3, E3> Я получаю побочные ошибки.

2. =ПОИСК(F3,$A$3:$B$46,$C$3:$C$46) Является ли этот подход правильным?

3. Это на правильном пути, но не совсем правильно. С помощью поиска вы можете иметь либо прямоугольный массив для поиска (например, A3:C46), либо вектор для поиска (например, A3:A46) и другой вектор для возвращаемого массива (например, C3:C46). В первом случае предполагается, что возвращаемое значение находится в самом правом столбце (столбец C), что вам и нужно. Поиск использует приблизительное совпадение — либо точное совпадение, либо следующее меньшее значение в списке — и предполагает, что значения поиска расположены в порядке, как у вас. Видишь support.microsoft.com/en-us/office/…