1. ADD2ARRAY
ADD2ARRAY(array, insertArray, start):在陣列 array 的第 start 個位置插入 insertArray 中的所有元素,再傳回該陣列。
範例:
ADD2ARRAY([3, 4, 1, 5, 7], [23, 43, 22], 3)傳回[3, 4, 23, 43, 22, 1, 5, 7]。
ADD2ARRAY([3, 4, 1, 5, 7], "測試", 3)傳回[3, 4, "測試", 1, 5, 7]。
注1:如果 start 為小於 1 的數或者不寫 start 參數,則預設從陣列的第一位開始插入陣列元素。
注2:若array, insertArray, start為儲存格時,只有編輯過的儲存格參與計算。
2. ARRAY-傳回陣列
1)概述
文法 | ARRAY(arg1,arg2...) | 傳回一個由 arg1,arg2,...組成的陣列. [arg1,arg2,...]可以由字串或者數字構成。 |
---|---|---|
參數 | number1,number2,… | 1 到 n 個參數或指定儲存格區域中所有數字 |
2)注意事項
當使用公式嵌套陣列儲存格時,如果陣列儲存格內實際是單值,會作為單值處理,需要嵌套 ARRAY 公式確定儲存格始終作為陣列計算(多值則不需要),比如 B2=ARRAY(1), 使用 INARRAY 函式應該寫成:INARRAY(1,ARRAY(B2)),如下圖所示:
如果寫成 INARRAY(1,B2),則無法傳回有效資料,如下圖所示:
3)範例
公式 | 結果 | 備註 |
---|---|---|
ARRAY("hello") | hello | - |
ARRAY("hello","world") | hello,world | - |
ARRAY("hello",98) | hello,98 | - |
ARRAY(67,98) | 67,98 | - |
3. GREPARRAY
GREPARRAY(array,fn):透過 fn 條件過濾 array 陣列,傳回過濾後的新陣列。
參數 | 含義 | 參數格式 |
---|---|---|
array | 被過濾的陣列,不可為空 | 陣列格式,如[4,2,6,8,7] |
fn | 過濾條件 | item/index 加運算條件 ,如 item != 3 item 格式:根據陣列值進行過濾,index 格式:根據陣列值的序號進行過濾 |
範例:
GREPARRAY([3,4,2,3,6,8,7], item != 3) 傳回 [4,2,6,8,7] 。
GREPARRAY([3,4,2,3,6,8,7], index!= 3) 傳回 [3,4,3,6,8,7] 。
注:fn 參數必須符合格式要求,否則過濾不生效。比如名稱沒有定義成 item/index,回傳值為原陣列。
4. INARRAY
INARRAY(co, array):傳回 元素co 在陣列 array 中第一次出現的位置,如果 co 不在 array 中,則傳回 0。
範例:
如果String[] arr = {"a","b","b","c","d"} ,則:
INARRAY("b", arr)傳回元素"b"第一次出現的位置 2。
INARRAY("e", arr)傳回 0。
5. INDEXOFARRAY
INDEXOFARRAY(array, index):傳回陣列 array 的第 index 個元素。
array:需要傳回元素的陣列。
index:陣列元素的下標。
範例:
INDEXOFARRAY(["第一個", "第二個", "第三個"], 2)傳回"第二個"。
在儲存格中輸入=indexofarray(["a","b","c","d"],3),獲取陣列中第三個位置的資料即回傳值為 c。
6. MAPARRAY
MAPARRAY(array, fn):批量處理陣列,透過fn對陣列中的元素進行轉換。
array:要轉換的陣列;
fn:處理陣列專案的函式 。
範例:
MAPARRAY([3,4,2,3,6,8,7], item != 3)傳回[false,true,true,false,true,true,true]。
MAPARRAY([3,4,2,-3,6,8,-5],if(item>0,1,0)),傳回[1,1,1,0,1,1,0]。
7. RANGE
1)概述
文法 | RANGE() | 函式有三種參數形式: 1. RANGE(to),預設from為1,step為1,例如:RANGE(4)傳回[1,2,3,4]。RANGE(-5)傳回[]。 2. RANGE(from,to),預設step為1,例如:RANGE(-1,3)傳回[-1,0,1,2,3]。RANGE(0,5)傳回[0,1, 2,3,4,5]。 3. RANGE(from,to,step),三個參數的情況參照上面的註釋,例如:RANGE(6,-1,-2)傳回[6,4,2, 0]。RANGE(4,1,1)傳回[]。 |
---|---|---|
參數1 | From | 開始值,整數,不寫預設為1 |
參數2 | To | 結束值,整數 |
參數3 | Step | 步長,不寫預設為1 |
回傳值 | Array | - |
2)範例
公式 | 結果 | 備註 |
---|---|---|
RANGE(4) | 1,2,3,4 | 從1開始,每次+1,直到4 |
RANGE(-5) | 傳回空值 | 從1開始,每次+1,無法到-5,因此傳回空值 |
RANGE(-1,3) | -1,0,1,2,3 | 從-1開始,每次+1,直到3 |
RANGE(6,-1,-2) | 6,4,2,0 | 從6開始,每次-2,直到-1 |
RANGE(4,1,1) | 傳回空值 | 從4開始,每次+1,無法到1,因此傳回空值 |
RANGE(1,6,2) | 1,3,5 | 從1開始,每次+2,直到6 |
8. REMOVEARRAY
REMOVEARRAY(array, start, deleteCount):從陣列 array 中刪除從第 start 個元素開始的 deleteCount 個陣列元素,並傳回刪除後的陣列。
範例:
REMOVEARRAY([3, 4, 4, 2, 6, 7, 87], 4, 2)傳回[3, 4, 4, 7, 87]。
9. REVERSEARRAY
REVERSEARRAY(array):傳回陣列 array 的倒序陣列。
範例:
REVERSEARRAY(["第一個", "第二個", "第三個"])傳回["第三個", "第二個", "第一個"]
注:使用 REVERSEARRAY 函式時,參數必須是陣列,如果參數不是陣列,必須使用 SPLIT 函式將其轉換為陣列,SPLIT 函式使用參見 SPLIT。
10. SLICEARRAY
SLICEARRAY(array, start, end):傳回陣列從第 start 個到第 end 個元素(包括第 end 個元素)。
範例:
SLICEARRAY([3, 4, 4, 5, 1, 5, 7], 3, 6)傳回[4, 5, 1, 5]。
SLICEARRAY([3, 4, 4, 5, 1, 5, 7], 3)傳回[4, 5, 1, 5, 7]。
注:當不使用 end 參數時,傳回從 start 開始到陣列結束之間的元素。
11. SORTARRAY
SORTARRAY(array):傳回陣列 array 排過序的陣列 ,預設升冪排列。
範例:
SORTARRAY([3, 4, 4, 5, 1, 5, 7])傳回[1, 3, 4, 4, 5, 5, 7]。
注:陣列 array 的元素類型必須一樣,並且要可比較。
12. UNIQUEARRAY
UNIQUEARRAY(array):去重,去掉陣列 array 中的重複元素,以保留第一次出現的元素為序,傳回去重之後的陣列。
範例:
UNIQUEARRAY([14, 2, 3, 4, 3, 2, 5, 6, 2, 7, 9, 12, 3])傳回[14, 2, 3, 4, 5, 6, 7, 9, 12]。
13. JOINARRAY
JOINARRAY(array,sepa):傳回一個由sepa作為分隔符的字串。
array:[arg1,arg2...]格式的陣列;
sepa:分隔符。
範例:
JOINARRAY([1,2],";")=1;2
JOINARRAY(['hello','world'],"-")=hello-world
注:對陣列儲存格使用該函式時,無需加上[],寫成joinarray(A1,"-")即可。若寫成joinarray([A1],"-"),函式可能無法達到預期效果。
因為A1儲存格本身就是陣列,[A1]是二維陣列,對二維陣列做join, 並不會去用符號join內層陣列。
14. WRITEARRAY
WRITEARRAY(array):傳回陣列 array 的所有元素。
注:適用於針對擴展儲存格使用函式的情景。如對擴展儲存格進行了刪除行的操作後,WRITEARRAY 可過濾掉被刪除的儲存格,使針對該擴展儲存格的計算所見即所得。
範例:
len(WRITEARRAY(B1)) 傳回擴展儲存格 B1 的長度。
15. 注意事項
若陣列在使用模擬計算時,參數需要寫成[1,2,3,4,5]格式。
例如輸入公式:INDEXOFARRAY(A2, 2),希望傳回陣列的第二個數字,則點選模擬計算後需要輸入參數格式為:[1,2,3,4,5],此時得出的模擬計算結果為2,如下圖所示: