是否可以使用R1C1格式引用Google Spreadsheets中的整个列?


12

在Google Spreadsheets中,我经常使用A1表示法来指代整列:

A1:A

由于以下原因,我想使用R1C1格式来引用整个列,例如:

R1C1:C1

在Excel中无法使用A1:A,因此R1C1表示法源自Excel,因此似乎不太可能在R1C1表示法中执行此操作。如果是这样,那会让我的生活更轻松。

背景:我有一个电子表格访问,它从另一个电子表格数据中提取信息,该电子表格数据具有动态变化的格式。

为了解决这个问题,我使用一个公式根据当前数据布局在单元格中生成一个地址。然后,我可以使用间接公式在其他公式中引用此地址单元格。而且使用R1C1生成地址比使用A1容易得多。


“由于无法在excel中使用A1:A”-您是说“由于无法在excel中使用R1C1”?
Vidar S. Ramdal 2012年

不,我的意思是范围A1:A仅适用于Google文档-使用excel,您必须为范围的末尾指定行和列。
s6mike 2012年

5
我不知道R2D2就无法阅读R1C1表示法。
索尼桑托斯

Answers:


3

简短答案

是的,可以使用R1C1表示法引用整个列: INDIRECT("C1",FALSE)

说明

Google表格没有将参考符号从A1更改为R1C1的功能,但最后一个可以与INDIRECT内置函数一起使用。

在具有1000行的工作表中,以下公式将返回1000

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

2
天才!谢谢:)从我问这个问题到现在已经过去了4年了,现在我只需要记住当我问这个问题时我在做什么!
s6mike

6

现在支持A1表示法。以A列为中心:

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

1
一直支持A1表示法,但是我的问题询问是否可以使用R1C1表示法来引用Google Spreadsheets中的整个列。
s6mike 2015年

2

否,但是您可以使用COUNTA函数来解决此问题,方法是知道哪一行是列中数据的最后一行。

INDIRECT("A1:A") 可以这样写 INDIRECT("R1C1:R" & COUNTA(R1C1:R1000C1) & "C1")

您需要确定一个合理的“最大行数”值。我在示例中使用了1000,因此此公式应在最多1000行的电子表格中使用。

COUNTAGoogle Spreadsheets函数列表中查找。


现在有可能(请参阅我的答案。也许这是在新的Google表格中引入的。
Rubén

啊,太好了!
Vidar S. Ramdal

-1

可接受的格式取决于所使用的方法。例如,在示例中,描述允许使用R1C1表示法,但是(至少在我看来)不清楚输入或输出是否为R1C1表示法。

我建议采用getRange(row, column, numRows, numColumns)代替(此处为官方文档)的用法。根据您的预期用途的详细信息,这将非常适合您的目的。我经常在'row'参数中使用变量来检索循环中的整个值范围。例如,getRange(row, 2, 1, 7)其中row = 3将返回range C2:C8。然后,只需递增“行”以返回下一个范围D2:D8。


1
您没有回答如何引用整个列的问题,而不是回答该列中指定数量的路由的问题。除非必要,否则不建议在循环中重复使用getRange,否则会导致性能下降和配额问题。

1
至于您在getRange方法中发现的不清楚的地方:它的输出是一个范围对象,而不是字符串,因此没有表示法的问题。指定用于输入的符号,它是一个字符串。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.