Поиск между датами в Excel

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

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 от 1/1/2017 через 2/28/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 в порядке. Что-то без формулы массива было бы идеально, так как это было бы будет работать над очень большой стол, но я понимаю, что не может быть возможным.

11
задан mcalex
15.12.2022 6:38 Количество просмотров материала 2518
Распечатать страницу

2 ответа

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

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

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

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

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

enter image description here

3
отвечен pat2015 2022-12-16 14:26

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

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

вам просто нужно изменить "ClientA" &" 1/1/2016 " на ячейки, которые вы ищете,A2:A12 & B2:B12 будет представлять 2 столбца, которые вы ищете из i.e Имя_клиента и Оценки_дата

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

enter image description here

0
отвечен PeterH 2022-12-16 16:43

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

microsoft-excel
microsoft-excel-2013
vba
vlookup
windows
Вверх