2017-01-09 65 views
0

我有一个Google表格电子表格,我想将该行的范围作为数组传递给自定义函数(例如,d37:m37)。如果你传递一个列的范围(例如,d4:d37),这很好地工作,但显然行在这方面的行为与列不同。Google Sheets row as array

我发现的唯一解决方法是传递一个二维范围(例如,d36:m37),然后在自定义函数中忽略除此二维“数组”的最后一行以外的所有内容。

是否没有办法从行中获取与列相同的行为,只需传入一行的范围并将其视为数组?

+0

如果您正在使用谷歌Apps脚本,我相信你可以将范围设置为d36:m36。您还可以使用其他一些getRange函数选项,例如[getRange(row,column,numRows)选项](https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,整型,整型)) –

回答

0

当您使用范围作为参数调用自定义函数时,函数将获得一个二维数组。例如,

  • 范围A1:B2表示为[['a1', 'b1'], ['a2', 'b2']](其中字符串是对那些细胞的实际内容的占位符)
  • 范围A1:B1(行)表示为[['a1', 'b1']]
  • 范围A1 :A2(一列)表示为[['a1'], ['a2']]
  • 作为例外,单个单元格区域(例如A1)直接传递该单元格中的值,而不是数组。

如您所见,阵列结构对于行范围和列范围而言是不同的。可以编写自定义函数来适当地处理上述所有情况。但是如果你的自定义函数是这样的,它需要一个列范围内,有一个简单的解决方法:使用transpose把行插入列,例如,

=customfunction(transpose(D37:M37))