1

У меня есть электронная таблица, в которой перечислены все клиенты и дата изменения их статуса. например

Client_Name   Transaction_Date    Status

ClientA       1/1/2017            Level_1

ClientB       2/1/2017            Level_2

ClientA       3/1/2017            Level_3

В предыдущем примере ClientA имеет статус Level_1 с 01.01.2017 по 28.02.2017 и статус Level_3 и далее. Я хочу создать поиск, который берет имя клиента и дату и возвращает статус на эту дату. Таким образом, желаемый результат будет:

Client_Name   Evaluation_Date    Status

ClientA       1/1/2016            NA/ERROR

ClientA       1/2/2017            Level_1

ClientA       3/2/2017            Level_3

Решения VBA также хороши. Что-то без формулы массива было бы идеально, так как это было бы выполнено для очень большой таблицы, но я понимаю, что это может быть невозможно.

2 ответа2

3

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

В этом примере образец таблицы находится в ячейках B4:D12. Введите клиента в E4 и введите дату в F4.

Теперь в G4 поместите следующую формулу и нажмите CTRL + SHIFT + ENTER из панели формул, чтобы создать и функцию массива.

=IF(MAX(IF(1=IF(F4>=IF($B$4:$B$12=E4,$C$4:$C$12,2958352),1,0),ROW($C$4:$C$12)-ROW($C$3),0))=0,"Not Found",INDEX($D$4:$D$12,MAX(IF(1=IF(F4>=IF($B$4:$B$12=E4,$C$4:$C$12,2958352),1,0),ROW($C$4:$C$12)-ROW($C$3),0))))

Когда вы вводите имя и дату клиента в E4 и F4, G4 должен показывать соответствующий уровень. Если дата предшествует какой-либо дате начального уровня, отображается идентификатор "Not Found".

0

Единственное решение, которое я мог придумать, было с массивом, хотя он не может быть вашим предпочтительным выбором, поскольку он все еще существует в качестве опции.

{=IFERROR(VLOOKUP("ClientA"&"1/1/2016",CHOOSE({1,2},A2:A12&B2:B12,C2:C12),2,0),"NA/ERROR")}

Вам просто нужно изменить "ClientA" и "01.01.2016" на ячейки, которые вы ищете, A2:A12 и B2:B12 будут представлять 2 столбца, которые вы ищите, т.е. Client_Name & Evaluation_Date

И, наконец, C2:C12 - это форма столбца, которой вы хотите вернуть значение, в вашем случае статус.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .