Microsoft Excel — копирование всей строки с другого листа на основе нескольких критериев

Microsoft Excel — копирование всей строки с другого листа на основе нескольких критериев

Хорошо, я уже некоторое время пытаюсь найти ответ на этот вопрос, но не могу получить его, используя конкретно формулы, поскольку для этого потребуется больше, чем может вместить строка формул, а у меня нет никакого опыта работы с МАКРОСАМИ.

Правила:

Правило 1. Fox/Golf/Hotel!A4 всегда будет 1-м, а A34 всегда будет 31-м числом месяца (A33=30-е, A32=29-е (когда применимо), A31=28-е)

Правило 1а. Fox!A36:A37 и Fox!A39:A40 никогда не будут встречаться

Правило 1а.1. Fox!A36 будет "Super-1-16", а Fox!A37 будет "Super-17-31"

Правило 1а.2. Fox!A39 будет «Основным», а Fox!A40 будет «Запасным».

Правило 1б. Гольф/Отель!A36:A37 никогда не будет свиданием.

Правило 1b.1. Golf/Hotel!A36 будет «Super-1-16», а Golf/Hotel!A37 будет «Super-17-31».

Правило 2. Соответствующие даты на Альфа/Браво/Чарли/Дельта! могут быть любой ячейкой B3:B400

Правило 3. «Position» — это вариант в «Alpha/Bravo/Charlie/Delta!A3:A400», но всегда будет константой для ячеек «Fox/Golf/Hotel!» (см. константы ниже).

Правило 3а. Лиса! Обозначения "позиции":

  1. B2="OOD" и должно охватывать C4:G34.
  2. I2="AOOD" и должен охватывать J4:M34.
  3. O2="DD" и должен охватывать P4:S34.
  4. A35="OOD SUPERNUMERARY" и должен охватывать C36:G37.
  5. A38="CDO" и должен охватывать C39:G40.
  6. I35="ADNCO SUPERNUMERARY" и должен охватывать J36:J37.
  7. O35="DD SUPERNUMERARY" и должен охватывать P36:S37.

Правило 3б. Гольф/Отель! Обозначения "позиции":

  1. B2="DNCO" и должен охватывать C4:F34.
  2. H2="ADNCO" и должен охватывать I4:L34.
  3. N2="Rover 1" и должен охватывать O4:R34.
  4. T2="Rover 2" и должен охватывать U4:X34.
  5. A35="DNCO SUPERNUMERARY" и должен охватывать C36:F37.
  6. H35="ADNCO SUPERNUMRARY" и должен охватывать C39:L40.
  7. N35="ROVER 1 SUPERNUMRARY" и должен охватывать J36:R37.
  8. T35="ROVER 2 SUPERNUMRARY" и должен охватывать P36:X37.

Правило 4. Следующие ячейки должны определять, с какого листа копируется информация:

Правило 4а. Лиса!(B будет диктовать C:G. I будет диктовать J:M. O будет диктовать P:S)

Правило 4a.1. B4:B34 (если Fox!B4="A", Fox!B2=Alpha!A136 и Alpha!B136="1 мая", то Fox!C4:G4 = Alpha!C136:G136).

Правило 4a.2. I4:I34 (если Fox!I7="D", Fox!I2=Delta!A98 и Delta!B98="4 мая", то Fox!J4:M4 = Delta!C98:F98).

Правило 4а.3. O4:O34.

Правило 4a.4. B36:B37 (если Fox!B36="C", Fox!A35=Charlie!A250, и Charlie!B250="1-16 мая", то Fox!C36:G36 = Charlie!C250:G250).

Правило 4a.5. B39:B40 (если Fox!B40="B", Fox!A38=Bravo!A123, и Bravo!B123="Сверхштатный", то Fox!C40:G40 = Bravo!C123:G250).

Правило 4а.6. I36:I37.

Правило 4а.7. О36:О37.

Правило 4b. Гольф/Отель! (B будет диктовать C:F. H будет диктовать I:L. N будет диктовать O:R. T будет диктовать U:X)

Правило 4б.1. B4:B34.

Правило 4б.2. H4:H34.

Правило 4б.3. N4:N34.

Правило 4б.4. Т4:Т34.

Правило 4б.5. Б36:Б37.

Правило 4б.6. H39:H40.

Правило 4б.7. N36:N37.

Правило 4б.8. Т36:Т37.

Мне нужно скопировать ячейки из "Alpha/Bravo/Charlie/Delta!B3:G400" в соответствующие ячейки в "Fox/Golf/Hotel!" на основе дат Fox/Golf/Hotel! (Fox/Golf/Hotel!A4:A40) и заданных полей "Position" в правиле 3.

ИЗМЕНИТЬ, ЧТОБЫ СДЕЛАТЬ ЗАПРОС МЕНЕЕ ЗАПУТАННЫМ:

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

Таблицы Fox!, Golf! и Hotel! соответствуют определенным зданиям, а таблички Alpha!, Bravo!, Charlie и Delta! соответствуют нашим разделам.

Fox/Golf/Hotel! заполняется путем извлечения информации из Alpha/Bravo/Charlie/Delta!. Я хотел бы сделать это автоматизированным, чтобы нам не приходилось копировать и вставлять каждый месяц.

Я попытался составить формулу, но вложение такого количества ЕСЛИИ не уместилось.

Я понимаю, что вышеизложенного много, но я постараюсь изложить ее как можно подробнее.

Для листа Фокс!,

Шаг 1. Мне нужно использовать ячейки B4:B34, чтобы определить, с какого листа извлекать информацию (Если B4=A, извлечь с листа Alpha!. ​​Если B4=B, извлечь с листа Bravo!. Если B4=C, извлечь с листа Charlie!. Если B4=D, извлечь с листа Delta!.)

Шаг 2. После того, как лист определен, мне нужно использовать ячейку B2, чтобы найти соответствие на Alpha/Bravo/Charlie/Delta!A3:A400.

Шаг 3. После того, как совпадение найдено, мне нужно использовать ячейку A4:A34, чтобы найти совпадение на Alpha/Bravo/Charlie/Delta!B3:B400

Шаг 4. Как только оба совпадения будут найдены в одной строке, мне нужно скопировать ячейки Alpha/Bravo/Charlie/Delta!C3:G400.

Примеры конкретно для Fox!:

Пример 1. Если Fox!B4="A", а Fox!B2=Alpha!A136, а Alpha!B136="1 мая", то Fox!C4:G4 = Alpha!C136:G136.

Пример 2. Если Fox!B4="B", а Fox!B2=Bravo!A136, а Bravo!B136="1 мая", то Fox!C4:G4 = Bravo!C136:G136.

Пример 3. Если Fox!B4="C", а Fox!B2=Charlie!A136, а Charlie!B136="1 мая", то Fox!C4:G4 = Charlie!C136:G136.

Пример 4. Если Fox!B4="D", а Fox!B2=Delta!A136, а Delta!B136="1 мая", то Fox!C4:G4 = Delta!C136:G136.

Примеры для Golf/Hotel! в частности:

Пример 1. Если Golf!B4="A", а Golf!B2=Alpha!A136, а Alpha!B136="1 мая", то Golf!C4:F4 = Alpha!C136:F136.

Пример 2. Если Hotel!B4="B", а Hotel!B2=Bravo!A136, а Bravo!B136="1 мая", то Golf!C4:F4 = Bravo!C136:F136.

Пример 3. Если Golf!B4="C", а Golf!B2=Charlie!A136, а Charlie!B136="1 мая", то Golf!C4:F4 = Charlie!C136:F136.

Пример 4. Если Hotel!B4="D", а Hotel!B2=Delta!A136, а Delta!B136="1 мая", то Hotel!C4:F4 = Delta!C136:F136.

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

решение1

Без обид, чувак, но это худший вопрос, который я когда-либо формулировал! А еще форматирование!

TL;DR, вот что, по-моему, вам нужно

Поместите это в ячейку C4, и это преобразует буквы от A до D в название листа.

=CHOOSE(CODE(B4)-CODE("A")+1,"Alpha!","Bravo!","Charlie!","Delta!")

Теперь в D4 мы вычислим индекс или номер строки на выбранном вами листе, где встречается совпадение B2.

=MATCH($B$2$, INDIRECT(C4 & "A3:A400"),0)

Теперь в E4 мы будем ссылаться на значения на другом листе при условии, что A4 совпадает со столбцом B: индекс D4 на другом листе.

=IF(A4 = INDEX(INDIRECT(C4 & "B3:B400"),D4), *link to cells in C to G cells*, *return blanks*)

Итак, наконец, это помещается в E4:I4 как формула массива (выберите E4 в I4, нажмите F2, вставьте формулу ниже и нажмите CTRL+SHIFT+ENTER — только ввод не сработает). Одна формула массива теперь будет занимать несколько ячеек в E4:I4: (обратите внимание, в Office 365 вы можете ввести формулу только в E4, и она перетечет в I4)

=IF(A4 = INDEX(INDIRECT(C4 & "B3:B400"),D4), INDEX(INDIRECT(C4 & "C3:C400"),D4):INDEX(INDIRECT(C4 & "G3:G400"),D4), "")

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