Хорошо, я уже некоторое время пытаюсь найти ответ на этот вопрос, но не могу получить его, используя конкретно формулы, поскольку для этого потребуется больше, чем может вместить строка формул, а у меня нет никакого опыта работы с МАКРОСАМИ.
Правила:
Правило 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а. Лиса! Обозначения "позиции":
- B2="OOD" и должно охватывать C4:G34.
- I2="AOOD" и должен охватывать J4:M34.
- O2="DD" и должен охватывать P4:S34.
- A35="OOD SUPERNUMERARY" и должен охватывать C36:G37.
- A38="CDO" и должен охватывать C39:G40.
- I35="ADNCO SUPERNUMERARY" и должен охватывать J36:J37.
- O35="DD SUPERNUMERARY" и должен охватывать P36:S37.
Правило 3б. Гольф/Отель! Обозначения "позиции":
- B2="DNCO" и должен охватывать C4:F34.
- H2="ADNCO" и должен охватывать I4:L34.
- N2="Rover 1" и должен охватывать O4:R34.
- T2="Rover 2" и должен охватывать U4:X34.
- A35="DNCO SUPERNUMERARY" и должен охватывать C36:F37.
- H35="ADNCO SUPERNUMRARY" и должен охватывать C39:L40.
- N35="ROVER 1 SUPERNUMRARY" и должен охватывать J36:R37.
- 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), "")