La meilleure solution de contournement que j'ai trouvée jusqu'à présent est la suivante:
worksheet_name!$A$1:$YY
mais idéalement, j'aimerais pouvoir simplement écrire, par exemple:
worksheet_name!
Alors, est-ce que quelqu'un sait: existe-t-il une syntaxe pour spécifier une feuille entière comme une plage?
J'ai créé un petit extrait de script Google Apps (GAS) pour effectuer le travail à votre place.
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;
}
Dans le menu de la feuille de calcul, sélectionnez Outils> Editeur de script, puis ajoutez le code. Assurez-vous d'appuyer sur le bouton de bogue:
=sheetRange("sheetName",int)
Utilisez l'option int
comme expliqué dans les remarques.
J'ai créé un exemple de fichier vous: Sheet as Range
Dans ce cas, il existe deux manières de déterminer une plage dans un tableur via GAS:
int=1
; Via la méthode getDataRange
. Cela va récupérer une plage, dans laquelle la dernière colonne est celle qui contient des données. Les mêmes comptes pour le nombre de lignes. C'est généralement l'itinéraire le plus simple. Voir la deuxième feuille dans le fichier d'exemple.int=2
; Via la méthode getSheetValues
. Cela récupérera une plage "WYSIWYG". Voir la troisième feuille dans le fichier d'exemple.Google Sheets n'a pas de syntaxe de plage pour la plage de feuilles entière.
La formule suivante renverra l'adresse de plage de la feuille entière nommée Sheet1
="Sheet1!"&ADDRESS(1,1,,TRUE)&":"&ADDRESS(ROWS(Sheet1!A:A),COLUMNS(Sheet1!1:1),,TRUE)
Pour l'utiliser comme référence, mettez-le dans INDIRECT. La formule suivante renverra un tableau de toutes les valeurs de la feuille Sheet1.
= ArrayFormula ( INDIRECT ( "Sheet1!" & ADDRESS (1,1, VRAI) & ":" & ADRESSE (ROWS (Sheet1! A: A), COLONNES (Sheet1! 1: 1), VRAI) , VRAI ) )
Pour spécifier la totalité de la feuille sous forme de plage, veuillez utiliser:
worksheet_name!A1:ZZ
vous pouvez l'essayer ici: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/clear
ou si vous utilisez Java (pour tout effacer de la feuille Sheet1):
Sheets service = getSheetsService(credential);
service.spreadsheets().values().clear(REPORT_WARNINGS_LATAM_FILEID, "Sheet1!A1:ZZ", new ClearValuesRequest()).execute();
ou si vous voulez simplement l'utiliser dans une formule (par exemple: SUM) sur une autre feuille (par exemple: Sheet2), vous pouvez utiliser la référence suivante:
=SUM(Sheet1!A1:ZZ)
^ Ceci additionnera toutes les cellules existantes de la feuille Sheet1 et mettra la valeur dans une cellule de la feuille Sheet2. Vous trouverez l'exemple ci-dessous: https://docs.google.com/spreadsheets/d/1rP3YCl3ErlYjlYGT_Q -xFvkVr7yKw6WQfHklbohL1NM/edit? usp = sharing . Dans cet exemple, nous avons 3 colonnes et 5 lignes sur la feuille Sheet1. Cette formule = SUM (Sheet1! A1: ZZ) les sélectionne toutes. Vous pouvez ajouter des lignes ou des colonnes sur la feuille Sheet1 et cette solution sélectionnera toujours toutes les cellules.
P.S .: si vous votez par le bas ma réponse - veuillez expliquer pourquoi.
Cela fonctionne pour moi:
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
var rg = sh.getName() +"!"+ sh.getDataRange().getA1Notation();
Utilisé dans un script lié, combinez le nom de la feuille avec un "!" puis obtenez la notation A1 de la plage de données sur la feuille choisie
Les meilleures réponses ont déjà été données pour les utilisateurs de appscript, mais si Google Sheets fonctionne correctement, voici une approche qui répond à vos besoins:
"worksheet_name!1:" & ROWS(worksheet_name!A:A)
Explication: * Vous spécifiez essentiellement la plage via une chaîne concaténée avec le nombre de lignes de nom_tôle!
Quelques avantages de cette approche: * C'est 'dynamique' ... si vous ajoutez des lignes au bas, la plage s'ajustera en conséquence * Léger - vous pouvez le glisser dans une fonction importrange/query
Inconvénients: * Je n'ai pas essayé dans tous les cas, donc cela ne fonctionne que pour des cas d'utilisation spécifiques * Personnellement, j'ai une préférence pour rendre les choses dynamiques/propres, de sorte qu'une fonction personnalisée serait un bon moyen terme entre appscript et cette approche légère
Je ne connais pas de nom spécifique, mais je pense que vous pouvez utiliser certaines formules si vous ne connaissez pas le nombre de lignes/colonnes:
indirect("Sheet!1:"&countif(Sheet!A:A,"<>@")+countif(Sheet!A:A,"=@"))
Ici, Sheet
est votre nom de feuille et @
est une chaîne arbitraire. Si la feuille que vous sélectionnez contient @
dans une cellule, cela ne fonctionnera pas. Vous pouvez le remplacer par un autre caractère si la feuille contient une telle cellule.
La COUNITF
ici compte le nombre de lignes de la colonne A: A ne contenant pas @
, qui devrait être tout si aucune cellule ne la contient, et INDIRECT
transforme Sheet!1:###
( où ###
représente le nombre de lignes) dans une plage sélectionnée.
J'ai pu sélectionner la feuille entière en nommant la plage comme feuille sans le point d'exclamation.
J'ai eu un onglet nommé données. Au lieu d'utiliser des données! ou des données! A1: ZZ.