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]。
注:如果 start 为小于 1 的数或者不写 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","c","d"} ,则:
INARRAY("b", arr)返回 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() | RANGE(from,to,step):表示从整数from开始,以step为每一步的大小,直到整数to的一个数字序列 RANGE(from,to):默认 step 为1。表示从整数from开始,每次+1,直到整数to的一个数字序列 RANGE(to):默认 from 为1,step 为1。表示从1开始,每次+1,直到整数to的一个数字序列 |
---|---|---|
参数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]。
例如使用内置 DEMO 「销量」数据表,A2 单元格拖入「产品」字段,设置数据为「列表」展示,然后再 B2 单元格输入公式 UNIQUEARRAY(A2),并设置扩展方向为「纵向」且左父格为无,如下图所示:
保存模板并点击分页预览,得到去重的数组「产品」,效果如下图所示:
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内层数组。
例如:
单元格 A1:A6 值为「苹果汁」「牛奶」「柳橙汁」「巧克力」「牛肉干」的数组,希望将其转为“;”分隔的字符串,如下图所示:
创建普通报表,分别在 A2、A3、A4、A5、A6 单元格输入「苹果汁」「牛奶」「柳橙汁」「巧克力」「牛肉干」,合并 B2:B5 单元格,并输入公式=joinarray(A2:A6,";"),如下图所示: