web-dev-qa-db-fra.com

Comment spécifier la totalité de la feuille comme plage dans Google Sheets?

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?

26
sampablokuper

J'ai créé un petit extrait de script Google Apps (GAS) pour effectuer le travail à votre place.

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;
}

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:
enter image description here

Usage

=sheetRange("sheetName",int)

Utilisez l'option int comme expliqué dans les remarques.

Exemple

J'ai créé un exemple de fichier vous: Sheet as Range

Remarques

Dans ce cas, il existe deux manières de déterminer une plage dans un tableur via GAS:

  1. 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.
  2. int=2; Via la méthode getSheetValues. Cela récupérera une plage "WYSIWYG". Voir la troisième feuille dans le fichier d'exemple.
  3. Les taux de rafraîchissement de ces types de fonctions personnalisées ne sont pas immédiats, alors soyez patient. Plusieurs heures peuvent être nécessaires pour que les données soient actualisées.

Références

10
Jacob Jan Tuinstra

Vous pouvez utiliser A: Z ou A: AB ou A: XX (XX étant la dernière colonne de votre page):

Screenshot of using this to apply conditional formatting to rows based on a single cell's value

8
Stefan Denk

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 
) 
) 
3
Rubén

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.

1
Maksym Ovsianikov

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

1
Metric Rat

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

1
JTopsalot

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.

1
Jerry

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.

0
ajon