2017-01-09 73 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))