Wie kann ich das gesamte Blatt als Bereich in Google Sheets angeben?


27

Die beste Lösung, die ich bisher gefunden habe, ist:

worksheet_name!$A$1:$YY

aber idealerweise möchte ich einfach schreiben können, zB:

worksheet_name!

Weiß jemand: Gibt es eine Syntax für die Angabe eines ganzen Blattes als Bereich?

Antworten:


10

Ich habe ein kleines Google Apps Script (GAS) -Snippet erstellt, um die Arbeit für Sie zu erledigen.

Code

function sheetRange(targetName,int) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var asName = ss.getActiveSheet().getSheetName();
  var tgSheet = ss.getSheetByName(targetName);
  var output;

  if(targetName == asName) {
    output = "Error: target sheet is active sheet !!";
  } else {
    switch(int) {
      case 1: 
        output = tgSheet.getDataRange().getValues();
        break;
      case 2:
        output = tgSheet.getSheetValues(1, 1, tgSheet.getMaxRows(),  
          tgSheet.getMaxColumns());
        break;
      default:
        output = "Choose int to be 1 or 2 !!";
    }
  }
  return output;
}

Wählen Sie im Tabellenkalkulationsmenü Extras> Skripteditor und fügen Sie den Code hinzu. Stellen Sie sicher, dass Sie den Bug-Button drücken:
Bildbeschreibung hier eingeben

Verwendung

=sheetRange("sheetName",int)

Verwenden Sie die intOption wie unter Bemerkungen erläutert.

Beispiel

Ich habe dir eine Beispieldatei erstellt: Sheet as Range

Bemerkungen

In diesem Fall gibt es zwei Möglichkeiten, einen Bereich in einer Tabelle über GAS zu bestimmen:

  1. int=1; Über die getDataRangeMethode. Dadurch wird ein Bereich abgerufen, in dem sich in der letzten Spalte Daten befinden. Gleiches gilt für die Anzahl der Zeilen. Dies ist normalerweise der einfachste Weg. Siehe zweites Blatt in der Beispieldatei.
  2. int=2; Über die getSheetValuesMethode. Dadurch wird ein "WYSIWYG" -Bereich abgerufen. Siehe drittes Blatt in der Beispieldatei.
  3. Aktualisierungsraten dieser benutzerdefinierten Funktionstypen sind nicht sofort verfügbar. Bitte haben Sie etwas Geduld. Es kann einige Stunden dauern, bis die Daten aktualisiert sind.

Verweise


Warum würde es mehrere Stunden dauern, bis diese Funktion aktualisierte Daten anzeigt? Ich dachte, der springende Punkt bei der Verwendung einer solchen Funktion wäre, immer den genauen Bereich zu haben?
ClearCloud8

1
Die Lösung mit getSheetValues ​​() ist 20% schneller als getDataRange () mit getValues ​​(). Getestet mit einem Blatt mit 38k Zellen.
Mark Witczak

11

Sie können A: Z oder A: AB oder A: XX verwenden (wobei XX die letzte Spalte Ihrer Seite ist):

Screenshot der Verwendung dieser Option zum Anwenden einer bedingten Formatierung auf Zeilen basierend auf dem Wert einer einzelnen Zelle


1
Ist gestorben: "Denk Mal Neu"? Wie beantwortet dies die Frage?
Jacob Jan Tuinstra

1
Jeder hier weiß, wie man einen Bereich angibt. Das war nicht die Frage.

3

Google Sheets hat keine Bereichssyntax für den gesamten Blattbereich.

Die folgende Formel gibt die Bereichsadresse des gesamten Blatts Sheet1 zurück

="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)

Um es als Referenz zu verwenden, fügen Sie es in INDIRECT ein. Die folgende Formel gibt ein Array aller Werte in Sheet1 zurück.

= ArrayFormula (
  INDIREKT(
    "Blatt1!"
    & ADRESSE (1,1,, WAHR)
    & ":"
    & ADRESSE (REIHEN (Sheet1! A: A), SPALTEN (Sheet1! 1: 1) ,, WAHR)
    ,
    WAHR
  )
)

1

Ich kenne keine bestimmte, aber ich denke, Sie können einige Formeln verwenden, wenn Sie die Anzahl der Zeilen / Spalten nicht kennen:

indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))

Hier Sheetist Ihr Blattname und @eine beliebige Zeichenfolge. Wenn sich das ausgewählte Blatt @in einer Zelle befindet, funktioniert es nicht. Sie können es durch ein anderes Zeichen ersetzen, wenn das Blatt eine solche Zelle enthält.

Die COUNITFhier zählt die Anzahl der Zeilen in Spalte A: A enthält nicht @, was alles sein sollte , wenn es keine Zellen enthalten , sind sie, und INDIRECTTransformationen Sheet!1:###(wo ###ist die Anzahl der Zeilen) in einem aktuellen ausgewählten Bereich.


Ich weiß den Aufwand zu schätzen, aber soweit ich das beurteilen kann, bietet Ihr Vorschlag keine Vorteile gegenüber der in meiner Frage erwähnten Problemumgehung, hat jedoch den Nachteil, dass er ausführlicher ist und der Benutzer ein Zeichen eingeben muss, das niemals vorhanden sein wird im Blatt.
sampablokuper

@sampablokuper Da ich sehr ausführlich bin, glaube ich nicht, dass ich eine Lösung dafür finden kann, da ich im zweiten Teil etwas übersehen habe, das ich jetzt zu meiner Antwort hinzugefügt habe. Soweit ich sehen kann, besteht der Vorteil gegenüber Ihrer aktuellen Problemumgehung darin, dass Sie nicht wissen müssen, wie viele Zeilen oder Spalten das Blatt enthält. Aber ja, das ist soweit es geht :( Vielleicht kann man sich eine Funktion aus einem VBA-Skript zusammensetzen.
Jerry

Vielen Dank, aber meine derzeitige Problemumgehung erfordert nicht, dass einer weiß, wie viele Zeilen das Blatt enthält und wie viele Spalten es enthält, solange es <676 Spalten enthält.
Sampablokuper

1

Die besten Antworten wurden bereits für diejenigen gegeben, die mit appscript arbeiten. Wenn jedoch jemand außerhalb von Google Sheets ordnungsgemäß arbeitet, gibt es einen Ansatz, der Ihren Anforderungen entspricht:

"worksheet_name!1:" & ROWS(worksheet_name!A:A)

Erläuterung : * Sie geben den Bereich im Wesentlichen über eine Zeichenfolge an, die mit der Anzahl der Zeilen in Arbeitsblattname verknüpft ist.

Einige Vorteile dieses Ansatzes : * Es ist 'dynamisch' ... wenn Sie Zeilen am unteren Rand hinzufügen, wird der Bereich entsprechend angepasst. * Leichtgewicht - Sie können dies in eine Importbereichs- / Abfragefunktion einklappen

Nachteile : * Ich habe es nicht in allen Fällen ausprobiert und kann es daher nur für bestimmte Anwendungsfälle verwenden


1

Das funktioniert bei mir:

var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();

Kombinieren Sie in einem gebundenen Skript den Blattnamen mit einem "!" und erhalten Sie dann die A1-Notation des Datenbereichs auf dem ausgewählten Blatt


0

Ich konnte das gesamte Blatt auswählen, indem ich den Bereich als Blatt ohne Ausrufezeichen benannte.

Ich hatte eine Registerkarte namens Daten. Anstatt Daten zu verwenden! oder Daten! A1: ZZ.


Wenn wir einem benannten Bereich einen Namen zuweisen, sollte eine Bereichsreferenz angegeben werden. Welchen Referenzbereich haben Sie verwendet?
Rubén

-1

Um das gesamte Blatt als Bereich anzugeben, verwenden Sie bitte:

worksheet_name!A1:ZZ

Sie können es hier ausprobieren: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear

oder wenn Sie Java verwenden (um alles in Sheet1 zu löschen):

Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();

oder wenn Sie es nur in einer Formel (zum Beispiel: SUM) auf einem anderen Blatt (zum Beispiel: Sheet2) verwenden möchten, können Sie folgenden Verweis verwenden:

=SUM(Sheet1!A1:ZZ)

^ Dadurch werden alle vorhandenen Zellen in Sheet1 summiert und der Wert in eine Zelle in Sheet2 eingefügt. Das Beispiel finden Sie hier: https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q-xFvkVr7yKw6WQfHklbohL1NM/edit?usp=sharing . In diesem Beispiel haben wir 3 Spalten und 5 Zeilen in Sheet1, daher wählt diese Formel = SUMME (Sheet1! A1: ZZ) alle aus. Sie können Zeilen oder Spalten in Sheet1 hinzufügen, und diese Lösung wählt weiterhin alle Zellen aus.

PS: Wenn Sie meine Antwort ablehnen, erklären Sie bitte, warum.


-2

Unter der Annahme, dass Sie die Anzahl der Zeilen kennen, können Sie das gesamte Blatt als "Arbeitsblattname" bezeichnen:

SCHRITTE:

  1. Wählen Sie das gesamte Arbeitsblatt aus
  2. Klicken Sie auf "Daten" -> "Benannte und geschützte Bereiche".
  3. Geben Sie "Arbeitsblattname" ein, um die Auswahl zu benennen, und klicken Sie auf "Fertig".

Jetzt wird jedes Mal, wenn Sie "Arbeitsblattname" in einer Funktion verwenden, auf das gesamte Arbeitsblatt verwiesen.


4
Ihre Methode führt zu einem "Schnappschuss" -Bereich. Das Hinzufügen beider Spalten oder Zeilen ändert den benannten Bereich nicht !!
Jacob Jan Tuinstra
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.