2013-12-17 5 views
5

Sheet1 enthält Spalten A bis D, wobei A einen eindeutigen Datensatzschlüssel enthält.ARRAYFORMULA und INDIRECT verwenden, um Zeilen zu iterieren und als Block zurückzugeben

Auf Sheet2 Ich möchte die Daten neu ordnen, gegen meine eigene Sortierreihenfolge. Colum A enthält meine eigenen benutzerdefinierten sortierten Datensatzschlüssel.

Was ich bisher auf Sheet2 getan habe, ist; Ich Berechnung der Aufzeichnungspositionen in Spalte B als

=ARRAYFORMULA(MATCH(A1:A100,Sheet!A:A,0)) 

Und ich habe versucht, ARRAYFORMULA INDIREKTE zu verwenden, um die Daten in einem Rutsch zu bekommen. Ich kann eine einzelne Zeile bekommen richtig

=ARRAYFORMULA(INDIRECT(("Sheet1!B"&B1&":D"&B1))) 

mit Was ich will, so etwas wie unten ist, aber es gibt immer noch die erste Zeile nur.

=ARRAYFORMULA(INDIRECT(("Sheet1!B"&B1:B100&":D"&B1:B100))) 

Hilfe.

Antwort

8

Leider unterstützt INDIRECT keine Iteration über ein Array.

Glücklicherweise funktioniert SVERWEIS und bedeutet auch, dass Sie die Helper-Spalte nicht benötigen. Also:

=ArrayFormula(VLOOKUP(A1:A100,Sheet1!A:D,{2,3,4}*SIGN(ROW(A1:A100)),0))

und in den new version of Sheets kann das dritte Argument vereinfacht werden:

=ArrayFormula(VLOOKUP(A1:A100,Sheet1!A:D,{2,3,4},0))

+0

Arbeiten wie ein Charme, dank Adams. Wenn ich darüber nachdenke, wird das auch funktionieren, wenn ein Tisch eines "armen Mannes" mitmacht, oder? –

+1

Warum sind solche nützlichen Informationen in der Dokumentation nicht verfügbar? –

+0

Sicher, es könnte als Tabelle Join verwendet werden, oft mit einem Schlag auf Leistung (die Formel wird mit jeder Änderung neu berechnet, die Sie vornehmen), so dass Sie möglicherweise erwägen, zu Werten nur zu ändern, sobald die Formel ihre Arbeit getan hat. Was die Dokumentation anbelangt, hat sie sich mit der neuen Version von Sheets verbessert, aber es gibt immer noch so viele Dinge, die wir "entdecken" müssen. https://productforums.google.com/forum/#!searchin/docs/multivalue2020parallel$20lookup/docs/36A0epDlIdE/qnywZst0DioJ – AdamL