
Ich habe fast 24 Stunden an einem Excel-Problem gearbeitet. Ich habe eine Formel, die fast das tut, was ich will, aber sie gibt nicht das zurück, was sie meiner Meinung nach zurückgeben sollte:
=INDEX(Data!D:D,SUMPRODUCT((Data!C:C=Total!A5)*(Data!A:A="Total")*(Data!B:B="Total")*(ROW(Data!D:D))))
Ich stelle mir die Zeile zum Indizieren der Spalte D im Arbeitsblatt „Daten!“ als die tatsächliche Zeile vor, in der die Übereinstimmung auftritt, aber FÜR JEDEN WERT AUSSER DEM ERSTEN WERT stammt der zurückgegebene Wert aus den 3 Zeilen darunter.
Ja, also erhalte ich für die erste Zelle, in der ich diese Formel anwende, den richtigen Wert aus Spalte D von „Daten!“ zurück. Aber für jede weitere Zelle mit der Formel erhalte ich den Wert in Spalte D von „Daten!“ zurück, drei Zeilen unter der Übereinstimmung.
Ich habe jede Kombination versucht, 3 von der Formel abzuziehen (um die richtige Zeile zurückzugeben), aber ohne Erfolg. Das würde immer noch nicht erklären, warum die erste Zelle, in der die Formel angewendet wird, den erwarteten Wert zurückgibt!
Natürlich ist jede Hilfe sehr willkommen ...
Antwort1
Mir ist nicht ganz klar, ob Sie dieerster, zweiter usw.Übereinstimmungen mit Total!A5 oder wenn Sie versuchen, die erste Übereinstimmung mit A5 zu finden, dann die erste Übereinstimmung mit A6 usw. Diese vorgeschlagene Lösung gilt für Ersteres.
Ich bevorzuge die Methode der mathematischen Ausgrenzung, um mehrere Ergebnisse von Übereinstimmungen zu erhalten. Wenn Sie das ausschließen, was nicht übereinstimmt, bleibt der Satz der übereinstimmenden Ergebnisse übrig. Ich bin auch so ungeduldig, dass ich die Berechnungsverzögerung bei vollständigen Spaltenverweisen als SUMPRODUCT
störend empfinde, also habe ich Ihre Bereichsverweise auf die ersten ~1K Zeilen reduziert.
=IFERROR(INDEX(Data!$D$2:$D$999, SMALL(INDEX(ROW($1:$998)+((Data!$C$2:$C$999<>Total!$A$5)+(Data!$A$2:$A$999<>"Total")+(Data!$B$2:$B$999<>"Total"))*1E+99,,),ROW(1:1))),"")
Dies ist ein Standard (Nicht-Array) Formel. Füllen Sie nach Bedarf aus, um alle übereinstimmenden Rückgaben zu erfassen. Wenn Sie dies für Ihre eigenen Zwecke transkribieren, denken Sie daran, dass dies ROW(1:998)
diePosition innerhalb Data!D2:D999
, nicht die tatsächliche Zeilennummer im Arbeitsblatt. ROW(1:1)
ist einfach ein Zähler, der beim Ausfüllen hochzählt. Manchmal COUNTIF
ist ein hier angemessener und kann verwendet werden, um mehrere übereinstimmende Ergebnisse für mehrere Nachschlagewerte abzufangen.