it-swarm.com.de

Google Spreadsheets: Wie erhält man eine erste (n-te) Zeile/Spalte aus einem Bereich? (eingebaute Funktionen)

Angenommen, ich habe diesen benannten Bereich, nicht bei A1.

      idz01  idz04  ida02
foo     a      1      b
bar     c      3      8
baz     8      2      g

Wie bekomme ich jetzt die erste Reihe? Und Nte Reihe? Und wie die N-te Spalte? Als Bereich mit den integrierten Funktionen.

Edit: Nte Zeile: =OFFSET(ObjednavkyData, N,0, 1) Letzte Zeile: 

=OFFSET(ObjednavkyData, 
    MAX(ARRAYFORMULA(ROW(ObjednavkyData)))-ROW(ObjednavkyData), 0, 1
 )
14
Ondra Žižka

Verwenden Sie einfach die INDEX-Funktion:

=INDEX(NamedRange1,NRow,NColumn)

Wenn Sie die letzte Zeile und Spalte wünschen, können Sie Folgendes verwenden:

=INDEX(NamedRange1,ROWS(NamedRange1),COLUMNS(NamedRange1))
  • INDEX ist effizienter als die volatilen Alternativen OFFSET und INDIRECT.

Beispiele:

=INDEX(ObjednavkyData,3,2) //This will return "c".
=INDEX(ObjednavkyData,ROWS(ObjednavkyData),COLUMNS(ObjednavkyData2)) //This will return "g".

Zusatz:

Wenn Sie die gesamte Zeile erhalten möchten, können Sie den Teil [column] der INDEX-Funktion weglassen. Und wenn Sie die gesamte Spalte benötigen, lassen Sie den [row] -Teil aus.

=INDEX(ObjednavkyData,3) //This will return row 3: "bar     c      3      8".
18
dePatinkin

Ich möchte eine alternative Methode vorschlagen, die auch mit unbeständigen ungenannten Bereichen funktioniert (z. B. Ausgabe anderer Funktionen, nicht nur Bereiche, die in der Kalkulationstabelle vorhanden sind.) Die allgemeine Idee ist die Verwendung von FILTER () als Extraktionsmechanismus und Konstrukt ein Vektor von Wahr/Falsch-Werten als Indikator für die zu extrahierenden Zeilen. Wenn der Quellbereich beispielsweise A1: D13 ist und ich Zeile 7 extrahieren möchte, würde ich schreiben

=filter(
   A1:D13,
   {transpose(split(rept("0 ", 6), " "));
    1;
    transpose(split(rept("0 ", rows(A1:D13)-7), " "))
   }
  )

Wie Sie sehen können, ist es auch einfach, eine beliebige Anzahl von Zeilen von überall aus zu extrahieren. Im Allgemeinen konstruieren Sie die Formel so:

=filter(
   <data>,
   {transpose(split(rept("0 ", <number rows to skip from the start>), " "));
    transpose(split(rept("1 ", <number of rows to extract>), " "));
    transpose(split(rept("0 ", <number of rows to skip until the end), " "))
   }
  )
1
ttarchala

Teilantwort: (noch offen für Bessere)

1. Reihe

OFFSET(Data, 0 , 0, 1)

Erste Spalte:

Sie können einfach einige Funktionen des Bereichs aufrufen und sie nehmen die 1. Spalte ein.
Oder wenn nötig:

OFFSET(Data, 0, 0, MAX(ARRAYFORMULA(ROW(Data))), 1)

Nte Reihe:
Der Schlüssel hier ist, dass OFFSET() nur rechts und unten füllt. Sie müssen diese Anweisungen also nur anhand ihrer Parameter beschneiden.

OFFSET(Data, N, 0, 1);

Könnte auch erreicht werden, indem die erste Zeile an ARRAYFORMULA() übergeben wird und für jede Spalte (Zelle) die Zelle der letzten Zeile mit INDEX(COLUMN(),ROW() + N) abgerufen wird.

Nte Spalte:

Ähnlich wie oben benötigen Sie nur die Anzahl der Zeilen.

OFFSET(Data, 0, N, ROWS(Data), 1);

Ich habe mit TRANSPOSE() gespielt, aber es scheint, dass OFFSET() es nicht gut verdaut.

1
Ondra Žižka

Erste Reihe:

=INDIRECT(COLUMN(data)&":"&COLUMN(data))

Erste Spalte:

=INDIRECT(CHAR(64+COLUMN(data))&":"&CHAR(64+COLUMN(data)))

Nte Zeile:

=INDIRECT(COLUMN(data)+N&":"&COLUMN(data)+N)

Nte Spalte:

=INDIRECT(CHAR(64+COLUMN(data)+N)&":"&CHAR(64+COLUMN(data)+N))

Ersetzen Sie Daten durch Ihren Datenbereich und N durch die Zeile/Spalte, die Sie in den Daten benötigen. Zeilen/Spalten werden beginnend mit 0 gezählt. Sie können den Kauf mit N-1 ändern.

Wenn Sie anstelle der Werte den tatsächlichen Bereich (A: A, 1: 1, A3: A3) erhalten möchten, müssen Sie in diesen Formeln dasINDIREKTEentfernen

Hoffe das hilft

1
Akshin Jalilov