INDEX - EQUIV à 2 conditions : impossible
Bonjour !
Voila toute la journée que j'ai passe pour essayer de trouver mon erreur. J'ai un fichier extrait de notre outil au travail et il y a 3 colonnes qui m'intéressent dans ma recherche (D, G et Z)
D represente numéro de fonds
G représente numéro/nom de compte (qui peut être un texte comme une série de nombres)
Z le montant
Les feuilles sont nommées ainsi :
Feuille 1 : Analyse
Feuille 2 : Data
Je veux : afficher le montant correspondant à mes deux critères que sont le numéro de fonds ainsi que numéro/nom de compte.
Ce tableau est complètement fictif car j'ai essayé de reproduire ce que j'ai réellement au boulot et comme ce sont des données sensibles...
J'ai donc deux feuilles : la première me servant a donner le résultat de la recherche et la deuxième contient l'extraction des données collées de notre outil interne.
Voila TOUTES les formules que j'ai essayées selon des sujets trouvés similaires sur internet :
=INDEX(Data!Z:Z;EQUIV(B5&C5;Data!D:D&Data!G:G;0)) avec concaténation tel quel ou avec également une cellule contenant la formule concaténer
=INDEX(Data!Z:Z;EQUIV(1;(Data!D:D=Analyse!B5)*(Data!G:G=Analyse!C5);0))
J'ai aussi essayé avec un SOMME PROD ou SI+RECHERCHEV
Avez-vous une solution a ce sujet s'il vous plait ou plutôt si vous pouvez m'éclaircir pourquoi ma formule bloque a partir de EQUIV selon l'aide a l'erreur de Excel.
Très bonne soirée a vous;
MS
Bonsoir,
une proposition, 2solutions
une solution via formule (avec ajout préalable d'une colonne)
une solution via fonction personnalisée
Function MatchSpe(ParamArray param())
'h2so4
'fonction exact match sur plusieurs colonnes
'appel = matchspe(valeur1,plagederecherche1,valeur2,plagederecherche2, ...)
'=matchspe(A1,data!A1:A20,b1,data!B1:B20,c1,data!D1:D20)
' toutes les plages (1 dimension) doivent avoir la même taille
' renvoie le numéro de la première ligne contenant les valeurs dans les plages indiquées
'
t = param(1)
For i = LBound(t) To UBound(t)
If param(0) = t(i, 1) Then
For j = 2 To UBound(param) Step 2
If param(j) <> param(j + 1)(i, 1) Then j = 100: Exit For
Next j
If j < 100 Then MatchSpe = i: Exit Function ' trouvé
End If
Next i
MatchSpe = CVErr(xlErrNA) 'non trouvé
End Function
Bonjour,
Merci beaucoup!
Ma journée est illuminée grâce à vous !