4 Stimmen

Excel-Funktionen zur Rückgabe der ersten Zeile oder ersten Spalte eines Bereichs? (für eine bessere 2-Wege-Suche in einer Datentabelle)

Also ich versuche, die klassische 2-Wege-Lookup aus einer Tabelle von Daten, dh zu tun:

     Jan-00   Feb-00   Mar-00
Joe
Bill
Steve

Ich möchte also den Wert für "Joe" für "Mar-00" nachschlagen.

Diese Art von Suchvorgängen wird normalerweise mit einer Kombination aus den Funktionen INDEX und MATCH durchgeführt. Der Nachteil dieses Ansatzes ist, dass MATCH nur auf einen eindimensionalen Bereich wirken kann, so dass Sie in einer großen Kalkulationstabelle mit vielen Tabellen am Ende drei Bereiche pro Tabelle statt einem definieren müssen (einen für Daten, einen für die Kopfzeile, einen für die linke Spalte).

Ich würde gerne so etwas machen können:

index(data1,match("Mar-00",getrow(mydata,1)),match("Joe",getcolumn(mydata,1)))

Gibt es etwas Ähnliches in Excel (oder eine ganz andere Möglichkeit, dies zu tun, vielleicht eine neue Funktion in Excel)?

11voto

jtolle Punkte 6913

Dies ist die klassische Verwendung für VLOOKUP (oder die damit verbundenen HLOOKUP ):

=VLOOKUP("Joe", mydata, 4, FALSE)

Sie können auch Folgendes verwenden INDEX um eine ganze Zeile oder Spalte aus einem Bereich (oder 2-D-Array) zu erhalten, indem Sie Null als einen der Parameter übergeben:

=VLOOKUP("Joe", mydata, MATCH("Mar-00", INDEX(mydata, 1, 0), 0), FALSE)

Dabei wird davon ausgegangen, dass Ihre "mydata" die gesamte Tabelle einschließlich der Zeilen- und Spaltenüberschriften ist.

(Natürlich können Sie auch einfach das tun, was Sie oben getan haben, indem Sie die getrow y getcolumn mit den Aufrufen zu INDEX .)

7voto

john Punkte 51

Verwenden Sie die offset Formel. Für einige benannte Bereiche myrange ist die erste Zeile:

offset(myrange,0,0,1)

Ähnlich verhält es sich mit der ersten Spalte:

offset(myrange,0,0,,1)

0voto

Robert Punkte 8628

Auch wenn dies nicht der effizienteste Ansatz ist, können Sie SUMPRODUCT verwenden, um diese Anforderung zu erfüllen. Sie sollten jedoch ein Arbeitsblatt haben, das die Werte enthält, und dann auf diese Werte in Ihrem Anzeigeblatt verweisen.

=SUMPRODUCT(--('RawData'!$A$1:$A$4="Joe"),--('RawData'!$B$1:$B$4="Mar-00"),'RawData'!$C$1:$C$4)

Wo:

  • 'RawData'!$A$1:$A$4 ist die Spalte, die die Namen enthält
  • 'RawData'!$B$1:$B$4 ist die Spalte, die die gewünschte Überschrift enthält (in diesem Fall das Datum)
  • 'RawData'!$C$1:$C$4 ist die Spalte, die den gewünschten Wert enthält

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X