2017-01-09 6 views
0

Ich habe eine Google Tabellenkalkulation, in der ich einen Bereich dieser Zeile als Array an eine benutzerdefinierte Funktion übergeben möchte (z. B. d37: m37). Dies funktioniert einwandfrei, wenn Sie den Bereich einer Spalte übergeben (z. B. d4: d37), jedoch verhalten sich Zeilen in dieser Hinsicht anscheinend anders als Spalten.Google Sheets-Zeile als Array

Die einzige Problemumgehung, die ich gefunden habe, besteht darin, einen zweidimensionalen Bereich (z. B. d36: m37) zu übergeben und dann innerhalb der benutzerdefinierten Funktion alle bis auf die letzte Zeile dieses zweidimensionalen "Arrays" zu ignorieren.

Gibt es keine Möglichkeit, das gleiche Verhalten von Zeilen wie von Spalten zu erhalten, und einfach einen Bereich einer Zeile übergeben und als ein Array behandelt werden?

+0

Wenn Sie mit Google Apps Script, ich glaube, Sie kann den Bereich als d36: m36 einstellen. Sie können auch einige der anderen getRange-Funktionsoptionen verwenden, z. B. die Option [getRange (row, column, numRows)] (https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange (Integer, Ganzzahl, Ganzzahl)) –

Antwort

0

Wenn Sie eine benutzerdefinierte Funktion mit einem Bereich als Parameter aufrufen, erhält die Funktion ein zweidimensionales Array. Zum Beispiel

  • Bereich A1: B2 wird als [['a1', 'b1'], ['a2', 'b2']] dargestellt (wo die Saiten Platzhalter für den tatsächlichen Inhalt dieser Zellen sind)
  • Bereich A1: B1 (a row) als [['a1', 'b1']]
  • Bereich A1 dargestellt wird : A2 (eine Spalte) wird als [['a1'], ['a2']]
  • als Ausnahme dargestellt, ein Einzelzellenbereich wie A1 übergibt den Wert in dieser Zelle direkt, nicht ein Array.

Wie Sie sehen können, ist die Array-Struktur für Zeilenbereiche und Spaltenbereiche unterschiedlich. Eine benutzerdefinierte Funktion kann geschrieben werden, um alle oben genannten Fälle angemessen zu behandeln. Aber wenn Sie Ihre benutzerdefinierte Funktion ist, so dass es einen Spaltenbereich erwartet, gibt es eine einfache Lösung: die transpose verwenden, um eine Zeile in eine Spalte zu drehen, zum Beispiel

=customfunction(transpose(D37:M37))