Voici une solution complète qui utilise un tableau croisé dynamique actualisé automatiquement pour afficher le classement final alternatif de manière dynamique lorsqu'une équipe est exclue via une liste déroulante.
Il supprime Table2
complètement et exclut l’équipe exclue du tableau croisé dynamique , les tables s’ajustant automatiquement pour supprimer les espaces vides.
En effet Table1
, il assombrit les lignes contenant l’équipe exclue avec une mise en forme conditionnelle. Le mieux que vous puissiez faire avec cette table est de masquer complètement les tours, en laissant des lignes vides.
Voici votre feuille de travail montrant les modifications ajoutées:
Formules:
Notez que toutes les formules suivantes utilisent des références structurées Excel 2007, mais fonctionnent également dans toutes les versions ultérieures d'Excel.
Formule 1 - Entrée dans F1:F14
:
=1+INT((ROW()-ROW(Table1[Round]))/2/COUNTIFS(Table1[Round],1,Table1[Team1],"<>"&$K$9,Table1[Team2],"<>"&$K$9))
Formule 2 - Matrice entrée ( Ctrl+ Shift+ Enter) dans G3
et copie-collé / vers le bas rempli 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)),"")
La formule 2 raffinée est la suivante:
=
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)
),
""
)
Formule 3 - La formule dans la colonne H
reste inchangée, répétée ici pour compléter:
=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]))
Tableau Pivot:
- La source de données du tableau croisé dynamique doit être remplacée par
Table2
.
- Le
Team
champ doit avoir des valeurs vides désélectionnées.
Les tables:
Table1
- Appliquez la formule de mise en forme conditionnelle suivante à la plage $A$3:$D$8
:
=OR($B3=$K$9,$C3=$K$9)
Table1
- Appliquez le format de numéro suivant à la colonne Score
:
0;-0;
Exclude
- Définissez la validation des données de K9
sur une liste déroulante avec la source suivante:
=$J$3:$J$6
VBA:
Ajoutez le code suivant au module Feuille de la feuille de calcul:
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
Ce code actualise simplement le tableau croisé dynamique chaque fois que la valeur de l'équipe exclue change. Il n’est pas strictement nécessaire pour que la solution fonctionne, mais vous devrez alors procéder à une actualisation manuelle après avoir modifié l’équipe (en cliquant avec le bouton droit de la souris sur le tableau croisé dynamique et en sélectionnant "Actualiser", par exemple).