La soluzione alternativa che ho trovato finora è:
worksheet_name!$A$1:$YY
ma idealmente vorrei poter semplicemente scrivere, ad esempio:
worksheet_name!
Qualcuno lo sa: esiste una sintassi per specificare un intero foglio come intervallo?
La soluzione alternativa che ho trovato finora è:
worksheet_name!$A$1:$YY
ma idealmente vorrei poter semplicemente scrivere, ad esempio:
worksheet_name!
Qualcuno lo sa: esiste una sintassi per specificare un intero foglio come intervallo?
Risposte:
Ho creato un piccolo frammento di Google Apps Script (GAS) per fare il lavoro per te.
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;
}
Nel menu del foglio di calcolo, selezionare Strumenti> Editor di script e aggiungere il codice. Assicurati di premere il pulsante bug:
=sheetRange("sheetName",int)
Utilizzare l' int
opzione come spiegato nelle osservazioni.
Ti ho creato un file di esempio: foglio come intervallo
In questo caso, ci sono due modi per determinare un intervallo in un foglio di calcolo tramite GAS:
int=1
; Tramite il getDataRange
metodo. Ciò recupererà un intervallo, in cui l'ultima colonna è quella che contiene dati. Lo stesso vale per il numero di righe. Questo è di solito il percorso più semplice. Vedi il secondo foglio nel file di esempio.int=2
; Tramite il getSheetValues
metodo. Ciò recupererà un intervallo "WYSIWYG". Vedi il terzo foglio nel file di esempio.Fogli Google non ha una sintassi di intervallo per l'intero intervallo di fogli.
La seguente formula restituirà l'indirizzo dell'intervallo dell'intero foglio denominato Foglio1
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
Per usarlo come riferimento, inserirlo all'interno di INDIRECT. La seguente formula restituirà una matrice di tutti i valori in Sheet1.
= ArrayFormula ( INDIRETTO ( "Sheet1!" E INDIRIZZO (1,1,, VERO) & ":" E INDIRIZZO (RIGHE (Foglio1 A:! A), COLONNE (Foglio1 1: 1) ,, VERO) , VERO ) )
Non ne conosco uno specifico, ma penso che puoi usare alcune formule se non conosci il numero di righe / colonne:
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
Ecco Sheet
il nome del tuo foglio ed @
è una stringa arbitraria. Se quel foglio che stai selezionando ha @
in una cella, non funzionerà. Puoi sostituirlo con un altro personaggio se mai il foglio contiene una tale cella.
Il COUNITF
qui conta il numero di righe nella colonna A: A non contenente @
, che dovrebbe essere tutto se non vi sono celle contengono, e INDIRECT
trasforma Sheet!1:###
(dove ###
è il numero di righe) in un intervallo selezionato reale.
Le risposte migliori sono già state fornite per coloro che operano all'interno di appscript, ma se qualcuno là fuori sta lavorando all'interno di Fogli Google, allora ecco un approccio che può soddisfare le tue esigenze:
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
Spiegazione : * Stai essenzialmente specificando l'intervallo tramite una stringa concatenata con il numero di righe in worksheet_name!
Alcuni vantaggi di questo approccio : * È 'dinamico' ... se aggiungi righe in fondo, l'intervallo si adatterà di conseguenza * Leggero - puoi schiaffeggiarlo in una funzione importrange / query
Svantaggi : * Non l'ho mai provato in tutti i casi, quindi potrebbe funzionare solo per casi d'uso specifici * Personalmente ho una preferenza per rendere le cose dinamiche / pulite, quindi una sorta di funzione personalizzata sarebbe una buona via di mezzo tra appscript e questo approccio leggero
Questo funziona per me:
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();
Utilizzato in uno script associato, combina il nome del foglio con un "!" e quindi ottenere la notazione A1 dell'intervallo di dati sul foglio scelto
Sono stato in grado di selezionare l'intero foglio nominando l'intervallo come foglio senza il punto esclamativo.
Ho avuto una scheda denominata dati. Invece di usare i dati! o dati! A1: ZZ.
Per specificare l'intero foglio come intervallo, utilizzare:
worksheet_name!A1:ZZ
puoi provarlo qui: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear
o se usi Java (per cancellare tutto in Sheet1):
Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();
o se vuoi semplicemente usarlo in una formula (ad esempio: SOMMA) su un altro foglio (ad esempio: Foglio2) puoi usare il seguente riferimento:
=SUM(Sheet1!A1:ZZ)
^ Questo sommare tutte le celle esistenti di Sheet1 e mettere il valore in una cella su Foglio2, è possibile trovare l'esempio qui: https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q-xFvkVr7yKw6WQfHklbohL1NM/edit?usp=sharing . In questo esempio abbiamo 3 colonne e 5 righe su Foglio1, quindi questa formula = SOMMA (Foglio1! A1: ZZ) li seleziona tutti. È possibile aggiungere righe o colonne su Sheet1 e questa soluzione selezionerà comunque tutte le celle.
PS: se voti in basso, rispondi alla mia risposta. Per favore, spiega perché.
Supponendo che tu conosca il numero di righe, puoi nominare l'intero foglio come "worksheet_name":
STEPS:
Ora ogni volta che si utilizza "nome_pagina" in una funzione, farà riferimento all'intero foglio di lavoro.