Вот комплексное решение, которое использует автоматически обновляемую сводную таблицу для динамического отображения альтернативного окончательного положения, когда команда исключается из выпадающего списка.
Она удаляет без команды из сводной таблицы и Table2
полностью, с таблицами автоматической регулировки , чтобы удалить любые пробелы.
Для Table1
он затемняет строки, содержащие исключенную команду с условным форматированием. Лучшее, что можно сделать с этой таблицей, - полностью скрыть раунды, оставляя пустые строки.
Вот ваш рабочий лист с добавленными изменениями:
Формулы:
Обратите внимание, что все следующие формулы используют структурированные ссылки Excel 2007, но будут работать и во всех более поздних версиях Excel.
Формула 1 - Введена в F1:F14
:
=1+INT((ROW()-ROW(Table1[Round]))/2/COUNTIFS(Table1[Round],1,Table1[Team1],"<>"&$K$9,Table1[Team2],"<>"&$K$9))
Формула 2 - Массив введен (Ctrl+Shift+Enter) в G3
и скопирован / вставлен в G3:G14
:
=IFERROR(INDEX(Table1[[Team1]:[Team2]],SMALL(IFERROR(1/(1/N(IF(1,(ROW(Table1[Round])-ROW(Table1[[#Headers],[Round]]))*(Table2[[#This Row],[Round]]=Table1[Round])*($K$9<>Table1[Team1])*($K$9<>Table1[Team2])))),FALSE),1+MOD(INT((ROW()-ROW(Table1[Round]))/COUNTIFS(Table1[Round],1,Table1[Team1],"<>"&$K$9,Table1[Team2],"<>"&$K$9)),COUNTIFS(Table1[Round],1,Table1[Team1],"<>"&$K$9,Table1[Team2],"<>"&$K$9))),1+MOD(ROW()-ROW(Table2[[#Headers],[Round]])-1,2)),"")
Предварительно подтвержденная формула 2 выглядит следующим образом:
=
IFERROR(
INDEX(
Table1[[Team1]:[Team2]],
SMALL(
IFERROR(1/(1/N(IF(1,
(ROW(Table1[Round])-ROW(Table1[[#Headers],[Round]]))
*(Table2[[#This Row],[Round]]=Table1[Round])
*($K$9<>Table1[Team1])
*($K$9<>Table1[Team2])
))),FALSE),
1+MOD(
INT((ROW()-ROW(Table1[Round]))/COUNTIFS(Table1[Round],1,Table1[Team1],"<>"&$K$9,Table1[Team2],"<>"&$K$9)),
COUNTIFS(Table1[Round],1,Table1[Team1],"<>"&$K$9,Table1[Team2],"<>"&$K$9)
)
),
1+MOD(ROW()-ROW(Table2[[#Headers],[Round]])-1,2)
),
""
)
Формула 3 - Формула в столбце H
остается неизменной, повторяется здесь для полноты:
=SUMPRODUCT(Table1[Score]*(Table2[[#This Row],[Round]]=Table1[Round])*(Table2[[#This Row],[Team]]=Table1[Team1])-Table1[Score]*(Table2[[#This Row],[Round]]=Table1[Round])*(Table2[[#This Row],[Team]]=Table1[Team2]))
Сводная таблица:
- Источник данных сводной таблицы должен быть изменен на
Table2
.
- В поле «
Team
необходимо отменить выбор пустых значений.
Таблицы:
Table1
Примените следующую формулу условного форматирования к диапазону $A$3:$D$8
:
=OR($B3=$K$9,$C3=$K$9)
Table1
- Применить следующий числовой формат для столбца Score
:
0;-0;
Exclude
- установите проверку данных K9
в раскрывающемся списке со следующим источником:
=$J$3:$J$6
VBA:
Добавьте следующий код в модуль Sheet на листе:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$K$9" Then Exit Sub
With Application
.EnableEvents = False
Me.PivotTables(1).RefreshTable
.EnableEvents = True
End With
End Sub
Этот код просто обновляет сводную таблицу всякий раз, когда изменяется значение исключенной команды. Это не является обязательным требованием, чтобы решение работало, но тогда вам придется выполнить обновление вручную после смены команды (например, щелкнув правой кнопкой мыши сводную таблицу и выбрав "Обновить").