Найти серийный номер с критериями

У меня есть база данных Excel, и они просят меня найти 8-значный серийный номер самого старого курильщика, участвовавшего в опросе. Человек является курильщиком, если cigst равен 4. Серийные номера указаны в столбце 3, а курильщики — в столбце N. Возраст — столбец.

это база данных, но внутри базы данных больше данных:

Я думаю, что нужно использовать функции INDEX, MAX и IF, но не уверен, в каком порядке их использовать.

Для самых старых на основе даты рассмотрите min() или minifs()

Solar Mike 08.01.2023 23:37

Excel не является базой данных. Это электронная таблица. Между ними большая разница, и важна терминология.

Ken White 09.01.2023 00:15
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
2
84
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Следующее должно работать, если входные данные находятся в диапазоне 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 для объединения результата. Если это не ожидается для вашего реального случая, вы можете удалить этот последний шаг.

Как всегда очень подробно =)

Mayukh Bhattacharya 09.01.2023 13:57

Спасибо за ваш ответ, однако теперь они просят меня, чтобы, если это значение разделяет более одного человека, представить первое значение, которое появляется в блоке данных. Должен ли я изменить функцию?

andrea65 10.01.2023 12:46

@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"))

David Leal 10.01.2023 14:27
Ответ принят как подходящий

Если есть несколько человек одного возраста, проще всего воспользоваться функцией фильтра:

=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.

Спасибо за ваш ответ, однако теперь они просят меня, чтобы, если это значение разделяет более одного человека, представить первое значение, которое появляется в блоке данных. Должен ли я изменить функцию?

andrea65 10.01.2023 12:49

Есть несколько способов сделать это. В формуле фильтра вы можете просто добавить @ после = Так это выглядит так =@FILTER($C$11:$C$39;($H$11:$H$39=MAXIFS($H$11:$H$39;$ N$11:$‌​N$39;4))*($N$11:$N$3‌​9=4))

WeAreOne 10.01.2023 12:59

Другие вопросы по теме