Est-il possible de se référer à une colonne entière dans les feuilles de calcul Google en utilisant le format R1C1?

12

Dans les feuilles de calcul Google, j'utilise souvent la notation A1 pour faire référence à une colonne entière:

A1:A

Pour les raisons que j'explique ci-dessous, je voudrais utiliser le format R1C1, pour faire référence à une colonne entière, quelque chose comme:

R1C1:C1

Il n'est pas possible d'utiliser A1: A dans Excel, de sorte que la notation R1C1 provient d'Excel, il semble peu probable qu'il soit possible de le faire en notation R1C1. Si c'est le cas, cela me faciliterait la vie.

Contexte: J'ai une visite de feuille de calcul, qui extrait des informations d'une autre feuille de calcul, dont le format change dynamiquement.

Pour contourner cela, j'utilise une formule pour générer une adresse dans une cellule, basée sur la disposition actuelle des données. Je peux ensuite référencer cette cellule d'adresse dans d'autres formules en utilisant indirecte. Et il est beaucoup plus facile de générer une adresse en utilisant R1C1 que A1.

s6mike
la source
"Comme il n'est pas possible d'utiliser A1: A dans Excel" - voulez-vous dire "Comme il n'est pas possible d'utiliser R1C1 dans Excel"?
Vidar S. Ramdal
Non, je voulais dire que la plage A1: A ne fonctionne que dans Google Docs - avec Excel, vous devez spécifier à la fois la ligne et la colonne pour la fin d'une plage.
s6mike
5
Je ne peux pas lire la notation R1C1 sans m'interroger sur une notation R2D2.
Sony Santos

Réponses:

3

Réponse courte

Oui, il est possible de référencer une colonne entière en utilisant la notation R1C1: Utiliser INDIRECT("C1",FALSE)

Explication

Google Sheets n'inclut pas de fonctionnalité pour changer la notation de référence de A1 à R1C1, mais la dernière pourrait être utilisée avec la fonction intégrée INDIRECT .

Exemple

Dans une feuille de 1 000 lignes, la formule suivante renvoie 1 000

=ROWS(INDIRECT("C1",FALSE)) 
Rubén
la source
2
Génie! Merci :) Maintenant, près de 4 ans se sont écoulés depuis que j'ai posé la question, maintenant j'ai juste besoin de me rappeler ce que je faisais quand je l'ai posée!
s6mike
6

La notation A1 est désormais prise en charge. Pour centrer la colonne A:

SpreadsheetApp.getActiveSheet().getRange("A1:A").setHorizontalAlignment("center");
Mike Evans
la source
1
La notation A1 a toujours été prise en charge, mais mes questions demandent s'il est possible d'utiliser la notation R1C1 pour faire référence à une colonne entière dans les feuilles de calcul Google.
s6mike
2

Non, mais vous pouvez contourner cela, en sachant quelle ligne est la dernière ligne avec des données dans une colonne, en utilisant la COUNTAfonction.

INDIRECT("A1:A") pourrait être écrit quelque chose comme INDIRECT("R1C1:R" & COUNTA(R1C1:R1000C1) & "C1")

Vous devez déterminer une valeur sensible de «max lignes». J'ai utilisé 1000 dans l'exemple, donc cette formule devrait fonctionner dans une feuille de calcul avec jusqu'à 1000 lignes.

Recherchez COUNTAdans la liste des fonctions des feuilles de calcul Google .

Vidar S. Ramdal
la source
Maintenant, c'est possible (voir ma réponse . Peut-être que cela a été introduit sur les nouvelles feuilles de calcul Google.
Rubén
Ah, c'est super!
Vidar S. Ramdal du
-1

Le format acceptable varie en fonction de la méthode utilisée. Dans celui-ci , par exemple, la description permet la notation R1C1, mais il n'est pas clair (du moins pour moi) si l'entrée ou la sortie est la notation R1C1.

Je recommande getRange(row, column, numRows, numColumns)plutôt d'adopter l'utilisation de ( Doc officiel ici ). Sur la base des détails donnés de votre utilisation prévue, cela conviendrait assez bien à vos besoins. J'utilise fréquemment une variable pour le paramètre 'row' pour récupérer toute une gamme de valeurs dans une boucle. par exemple, getRange(row, 2, 1, 7)où row = 3 retournerait la plage C2:C8. Ensuite, il suffit d'incrémenter «ligne» pour retourner la plage suivante D2: D8.

Mithrandir
la source
1
Vous ne répondez pas à la question de savoir comment faire référence à la colonne entière, au lieu d'un nombre spécifié de routes dans cette colonne. L'utilisation répétée de getRange dans une boucle n'est pas recommandée, sauf si cela est nécessaire, cela conduit à de mauvaises performances et à des problèmes de quota.
1
Quant à ce que vous avez trouvé peu clair dans la méthode getRange: sa sortie est un objet range, pas une chaîne, il n'est donc pas question de notation pour cela. La notation est spécifiée pour l'entrée, qui est une chaîne.