Excel — найдите значение, связанное с идентификатором, и заполните другую книгу

Excel — найдите значение, связанное с идентификатором, и заполните другую книгу

Я работаю в небольшой больнице в Индии и столкнулся со следующей проблемой: для специального препарата у нас есть список с ДАТА, ИДЕНТИФИКАТОР, ДОЗА, ПРОДОЛЖИТЕЛЬНОСТЬ, СЛЕДУЮЩИЙ ПОСЕЩЕНИЕ, который мы используем как ежедневный рабочий список (рабочая тетрадь 1), то есть один идентификатор (лицо) может появляться в этом списке более одного раза.

В другой рабочей книге у нас есть «Главный файл» (рабочая книга 2) с каждым идентификатором только один раз, но шаблон (ДАТА, ДЛИТЕЛЬНОСТЬ, СЛЕДУЮЩИЙ ПОСЕЩЕНИЕ) повторяется каждый раз, когда человек приходит снова (то есть ДАТА2, ДЛИТЕЛЬНОСТЬ2, СЛЕДУЮЩИЙ ПОСЕЩЕНИЕ2)

Я ищу элегантный способ автоматически заполнить данные из моего ежедневного списка (рабочая книга 1) в главном листе (рабочая книга 2). Поэтому я предполагаю, что мне понадобится некоторая функция IF + INDEX/Match + Array, чтобы найти ID в рабочей книге 1, получить значения для DATE1, DURATION1, NEXT VISIT2 и заполнить рабочую книгу 2, затем пройти дальше по списку в рабочей книге 1, найти следующее время прихода пациента, получить данные и снова заполнить их в рабочей книге 2, но теперь в DATE2... и так далее.

Я добавляю две картинки, поясняющие проблему.

Ежедневный лист:
введите описание изображения здесь

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

решение1

  1. Можно найти значения с помощью формул. Вам просто понадобятся заголовки, чтобы показать числа, например 1 с форматом0 "ст визит"и т. д.
  2. К сожалению, функции никогда не будут иметь дело с двумя вещами: потерей данных и переполнением. Представьте, что пациент приходит 8-й раз, и он не отображается в вашей таблице, потому что вы заполнили ее только до 7.

Функция, которую вы, вероятно, ищете, это

=SUMPRODUCT(1*(A3>$A$3:$A$8),1*(B3=$B$3:$B$8))+1

который нужно добавить в рабочую книгу один и он скажет вам номер данной встречи, первая: 1, вторая: 2 и т. д. Еще одна проблема с этой формулой в том, что она не различает два числа с одинаковым значением. Если человек случайно посетит вас дважды в один день (предполагая, что вы не записываете с точностью до часов), это будет считаться только как одно.

решение2

Как описано в другом ответе, вы можете сделать это с помощью формулы, но это может быть не лучшим/простым решением, я бы использовал один из следующих вариантов:

Сводная таблица:

Вероятно, самое простое и элегантное решение, если вы можете смириться с его ограничениями:
- диапазон назначения не редактируется (возможно, в вашем случае это даже плюс).
- вы можете использовать только числовые и датовые значения в теле вашей таблицы (в вашем примере только текст - это rate, но вы можете задать пользовательский формат чисел, чтобы после числа отображалось "mg").
Подготовка:
- добавьте новый столбец в вашу таблицу - VisitSequence: =countifs(f:f,f3,b:b,"<="&b3).
- создайте сводную таблицу. Метки столбцов: ID; заголовки строк: VisitSequence; значения: Дата, доза, продолжительность, следующий визит (так как у вас есть только одна строка для каждой комбинации ID X дата, вы можете использовать либо сумму, либо среднее значение).

ВБА:

Требует гораздо больше работы, чем Pivot, но гораздо более гибок.

MS Access:

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

Связанный контент