Можно ли ссылаться на целый столбец в таблицах Google в формате R1C1?


12

В таблицах Google я часто использую нотацию A1 для обозначения целого столбца:

A1:A

По причинам, которые я объясняю ниже, я хотел бы использовать формат R1C1 для ссылки на целый столбец, что-то вроде:

R1C1:C1

Невозможно использовать A1: A в Excel, так как нотация R1C1 происходит из Excel, маловероятно, что это возможно сделать в нотации R1C1. Если это так, это облегчит мою жизнь.

Фон: у меня есть посещения электронных таблиц, которые извлекают информацию из других данных электронных таблиц, которые имеют динамически изменяющийся формат.

Чтобы обойти это, я использую формулу для генерации адреса в ячейке на основе текущего макета данных. Затем я могу ссылаться на эту ячейку адреса в других формулах, используя косвенные. И гораздо проще сгенерировать адрес с помощью R1C1, чем A1.


«Как невозможно использовать A1: A в Excel» - вы имеете в виду «Как невозможно использовать R1C1 в Excel»?
Видар С. Рамдал

Нет, я имел в виду, что диапазон A1: A работает только в Документах Google - в Excel нужно указывать и строку, и столбец для конца диапазона.
s6mike

5
Я не могу прочитать нотацию R1C1, не задаваясь вопросом о ноте R2D2.
Sony Santos

Ответы:


3

Короткий ответ

Да, можно ссылаться на весь столбец, используя нотацию R1C1: Использовать INDIRECT("C1",FALSE)

объяснение

Таблицы Google не включает в себя функцию для изменения опорного обозначения от А1 до R1C1 , но последний может быть использованы с НЕПРЯМОЙ встроенной функцией.

пример

В листе, содержащем 1000 строк, следующая формула вернет 1000

=ROWS(INDIRECT("C1",FALSE)) 

2
Genius! Спасибо :) Прошло почти 4 года с тех пор, как я задал вопрос, теперь мне просто нужно вспомнить, что я делал, когда я его задал!
s6mike

6

Запись A1 теперь поддерживается. По центру столбца A:

SpreadsheetApp.getActiveSheet().getRange("A1:A").setHorizontalAlignment("center");

1
Нотация A1 всегда поддерживалась, но мои вопросы спрашивают, возможно ли использовать нотацию R1C1 для ссылки на целый столбец в таблицах Google.
s6mike

2

Нет, но вы можете обойти это, зная, какая строка является последней строкой с данными в столбце, используя COUNTAфункцию.

INDIRECT("A1:A") может быть написано что-то вроде INDIRECT("R1C1:R" & COUNTA(R1C1:R1000C1) & "C1")

Вам необходимо определить разумное значение «max rows». В этом примере я использовал 1000, поэтому эта формула должна работать в электронной таблице, содержащей до 1000 строк.

Посмотрите COUNTAв списке функций Google Spreadsheets .


Теперь это возможно (см. Мой ответ . Может быть, это было введено в новых листах Google.
Рубен

Ах, это здорово!
Видар С. Рамдал

-1

Приемлемый формат варьируется в зависимости от используемого метода. В этом примере, например, описание допускает нотацию R1C1, но неясно (по крайней мере мне), является ли вход или выход нотацией R1C1.

Я рекомендую принять getRange(row, column, numRows, numColumns)вместо этого ( Официальный документ здесь ). Основываясь на данных вашего предполагаемого использования, это вполне удовлетворит ваши цели. Я часто использую переменную для параметра 'row', чтобы получить весь диапазон значений в цикле. например, getRange(row, 2, 1, 7)где row = 3 вернет диапазон C2:C8. Затем просто увеличьте значение 'row', чтобы получить следующий диапазон D2: D8.


1
Вы не отвечаете на вопрос о том, как сослаться на весь столбец вместо указанного количества маршрутов в этом столбце. Повторное использование getRange в цикле не рекомендуется, если в этом нет необходимости, это приводит к снижению производительности и проблемам с квотами.

1
Что касается того, что вы обнаружили неясным в методе getRange: его вывод - это объект диапазона, а не строка, поэтому для него не возникает вопроса о нотации. Обозначение указано для ввода, который является строкой.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.