2016年8月20日 星期六

Google Sheets: Array Lesson 1: 建立陣列 (Creating an array)

在Google試算表(Sheets)中,每當描述一個範圍時,例如:A1:C3,就會形成一個陣列。事實上,只要同時描述一群值,這群值就構成陣列。如何描述一群值呢?

大致上,有兩大類方式可以產生一群值:
  1. 儲存格範圍(Cell Range)。(例如:$B$2:$D$5)
  2. 函式傳回陣列(Function Returned Array)。
    • (例如:FILTER())
    • 直接描述陣列(Literal Array)。(例如:{1,2,3;4,5,6;7,8,9})

1. 儲存格範圍(Cell Range)

如果範圍只涵蓋單個儲存(例如:$A$1:$A$1),並不會形成陣列。Google Sheets會重新將它解釋成單一儲存格(亦即$A$1)。

當描述的範圍涵蓋多個儲存格時(例如:$B$2:$D$5),才會形成陣列。

2. 函式傳回陣列(Function Returned Array)


2.1

有些函式的傳回值,在某些狀況下,就已經是陣列了。(例如:FILTER()、QUERY()、INDEX()、...)

2.2 直接描述陣列(Literal Array)

可以透過大括號、逗號、分號,直接描述一個陣列。例如:{1,2,3;4,5,6;7,8,9}。(參考資料:Using arrays in Google Sheets)
  • 大括號({}):表示裡面是描述一個陣列。
  • 逗號(,):分隔不同欄(Column)的值。
  • 分號(;):分隔不同列(Row)的值。
而且陣列的元素不限於常數,也可以是其他的陣列(儲存範圍、函式傳回值、直接描述陣列)。

事實上,大括號({})可以視為是一個「會傳回陣列的函式」,如果一定要給它個名字的話,也許就叫做ARRAY_LITERAL()。

相關文章

1. Google Sheets: Array Lesson 2: 陣列-交集-單值 (Array-Intersection-Single value)
2. Google Sheets: Array Lesson 3: 陣列-維持-多值 (Array-Keep-Multiple value)
3. Google Sheets: Array Lesson 4: 陣列-擴展 (Array-Expansion)

參考資料

1. Open Formula: Non-Scalar Evaluation (aka 'Array expressions')
2. Apache OpenOffice: Documentation/How Tos/Using Arrays
3. LibreOffice: Calc: Array Functions