Я работаю с некоторыми спортивными данными и пытаюсь динамически перенести информацию об игре в другой лист Excel. Я создал формулу Excel, которая делает в основном то, что я хочу, но я хочу посмотреть, смогу ли я немного изменить ее поведение. Вот несколько скриншотов данных, а затем я объясню, чего я пытаюсь достичь.
Этот первый снимок экрана представляет собой небольшую выборку некоторых данных, с которыми я работаю. У меня жирным шрифтом выделены ВВС, поскольку это пример команды, которую я буду использовать для сбора данных.
Здесь я извлекаю данные на другой лист в Excel. Таблица слева — это результат, который я получаю в данный момент, а таблица справа — это формат таблицы, которого я пытаюсь достичь. Ячейка A1 используется только для сравнения с листом «Расписание».
Вот формула, которую я сейчас использую:
=IFERROR(INDEX(Schedule!$A$1:$I$866,MATCH((AGGREGATE(15,3,((Schedule!$F$1:$I$866=$A$1)/(Schedule!$F$1:$I$866=$A$1)*ROW(Schedule!$F$2:$I$866))-ROW(Schedule!$F$1),ROWS($O$2:O2)))-1,Schedule!$A:$A,0),COLUMN(B$1)),"")
Итак, изменения, которые, как я знаю, необходимо будет сделать, чтобы сделать возможной вторую таблицу, - это оператор IF, который я создал, а затем выполнить приращение значения [k] формулы AGGREGATE, только если оператор IF верен.
Вот логика, которую я использую для оператора IF:
=IF(XLOOKUP(1,((Schedule!$B$2:$B$30=$I9)*((Schedule!$F$2:$F$30=$A$1)+(Schedule!$G$2:$G$30=$A$1))),Schedule!$B$2:$B$30,"")=$I9,*PULL THE DATA*,*LEAVE DATA BLANK*)
Таким образом, текущее используемое значение приращения [k] — это ROWS($O$2:O2), которое работает нормально, но поскольку «ВВС» отсутствует в течение 3-й недели, просто извлекается следующая доступная неделя — 4-я.
Как я могу вместо этого сохранить более статическое значение, которое увеличивается на 1 при фактическом запуске формулы?
Я изменил формулу на эту, которая позволяет мне иметь статические недели, а затем начинать с DATE, а не с WK:
=IF(XLOOKUP(1,((Schedule!$B$2:$B$30=$I9)*((Schedule!$F$2:$F$30=$A$1)+(Schedule!$G$2:$G$30=$A$1))),Schedule!$B$2:$B$30,"")=$I9,IFERROR(INDEX(Schedule!$A$1:$I$30,MATCH((AGGREGATE(15,3,((Schedule!$F$1:$I$30=$A$1)/(Schedule!$F$1:$I$30=$A$1)*ROW(Schedule!$F$2:$I$30))-ROW(Schedule!$F$1),ROWS($O$2:O2)))-1,Schedule!$A:$A,0),COLUMN(C$1)),""),"")
Поэтому, когда наступит третья неделя, поскольку за третью неделю данные не будут извлечены, мне нужно, чтобы значение [k] функции АГРЕГАТ не увеличивалось.
Возможно, я иду неверным путем, но это то, что мне удалось достаточно близко подойти к моей конечной цели по сбору данных.
Любая помощь приветствуется. Спасибо.
ОБНОВЛЯТЬ
Поскольку данные о неделях действительно являются статическими известными данными, я смог адаптировать и использовать предложение bugdropown, которое, похоже, работает безупречно.
=XLOOKUP($B2&$A$1,Schedule!$B$2:$B$30&Schedule!$F$2:$F$30,Schedule!$C$2:$G$30,XLOOKUP($B2&$A$1,Schedule!$B$2:$B$30&Schedule!$G$2:$G$30,Schedule!$C$2:$G$30,"",0),0)
Спасибо!
Какую версию Excel вы используете?
Сейчас использую версию 2407.
Предположения:
А.) Вы хотите получить полное расписание (домашние и выездные игры) для одной команды.
Б.) «Пока» недели должны показывать пустую строку.
Поскольку количество недель в сезоне известно, создайте таблицу поиска, заполнив столбец WK: =SEQUENCE(18)
В формуле поиска установите аргумент lookup_value
для объединения WK и названия команды. Мы вложим формулы XLOOKUP()
так, чтобы, если для WK не существует выездной игры, другая XLOOKUP()
будет искать конкатенацию WK и названия команды в столбце HOME, в противном случае — возвращать пустую строку.
В своей рабочей тетради я назвал лист с полным расписанием MasterSchedule
, а расписание для критериальной группы — TeamSchedule
. Я нашел команду lookup_value
в ячейке TeamSchedule!$I$2
(сейчас установлена в Air Force
).
Заполнив данные WK за сезон TeamSchedule!$A2:$19
с помощью: =SEQUENCE(18)
в TeamSchedule!$A$2
, введите следующую формулу в TeamSchedule!B2
и перетащите ее вниз через TeamSchedule!B19
:
=XLOOKUP($A2&$I$2,MasterSchedule!$B$2:$B$30&MasterSchedule!$F$2:$F$30,MasterSchedule!$C$2:$G$30,
XLOOKUP($A2&$I$2,MasterSchedule!$B$2:$B$30&MasterSchedule!$G$2:$G$30,MasterSchedule!$C$2:$G$30,"",0)
,0)
Мне удалось адаптировать это к своей таблице, и это отлично работает! Большое спасибо. Избавление от функции AGGREGATE также сделало это намного чище.
@Link Рад, что это помогло. Спасибо за баллы и удачи в вашем проекте.