У меня есть база данных Excel, и они просят меня найти 8-значный серийный номер самого старого курильщика, участвовавшего в опросе. Человек является курильщиком, если cigst равен 4. Серийные номера указаны в столбце 3, а курильщики — в столбце N. Возраст — столбец.
это база данных, но внутри базы данных больше данных:
Я думаю, что нужно использовать функции INDEX, MAX и IF, но не уверен, в каком порядке их использовать.
Excel не является базой данных. Это электронная таблица. Между ними большая разница, и важна терминология.
Следующее должно работать, если входные данные находятся в диапазоне 11-100
строк. Вы можете адаптировать его к вашему реальному диапазону. Учитывая также отсутствие ограничений версии Excel на основе тегов, перечисленных в вопросе.
=LET(f, FILTER(HSTACK(C11:C100, H11:H100), N11:N100=4), fa, INDEX(f,,1),
fb, INDEX(f,,2), TEXTJOIN(",",,FILTER(fa, fb=MAX(fb))))
Сначала вы фильтруете подмножество столбцов pserial и age на основе значений столбца cigst, равных 4
, а затем просто находите максимум. Чтобы максимальному возрасту не соответствовало более одного значения pserial, мы используем TEXTJOIN
для объединения результата. Если это не ожидается для вашего реального случая, вы можете удалить этот последний шаг.
Как всегда очень подробно =)
Спасибо за ваш ответ, однако теперь они просят меня, чтобы, если это значение разделяет более одного человека, представить первое значение, которое появляется в блоке данных. Должен ли я изменить функцию?
@irene1509 тогда вы можете использовать XLOOKUP
например: =LET(f, FILTER(HSTACK(C11:C100, H11:H100), N11:N100=4), fa, INDEX(f,,1), fb, INDEX(f,,2), XLOOKUP(MAX(fb), fb, fa, "Not found"))
Если есть несколько человек одного возраста, проще всего воспользоваться функцией фильтра:
=FILTER($C$11:$C$39;($H$11:$H$39=MAXIFS($H$11:$H$39;$N$11:$N$39;4))*($N$11:$N$39=4))
Возможно, вы заменили точку с запятой на запятую, в зависимости от вашей версии Excel.
Спасибо за ваш ответ, однако теперь они просят меня, чтобы, если это значение разделяет более одного человека, представить первое значение, которое появляется в блоке данных. Должен ли я изменить функцию?
Есть несколько способов сделать это. В формуле фильтра вы можете просто добавить @ после = Так это выглядит так =@FILTER($C$11:$C$39;($H$11:$H$39=MAXIFS($H$11:$H$39;$ N$11:$N$39;4))*($N$11:$N$39=4))
Для самых старых на основе даты рассмотрите min() или minifs()