反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

数组函数概述

  • 文档创建者:lu123
  • 历史版本:23
  • 最近更新:Carly 于 2023-03-22
  • 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的一个数字序列

    参数1From

    开始值,整数,不写默认为1

    参数2To结束值,整数
    参数3Step步长,不写默认为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 值为「苹果汁」「牛奶」「柳橙汁」「巧克力」「牛肉干」的数组,希望将其转为“;”分隔的字符串,如下图所示:

    1632902530533158.png

    创建普通报表,分别在 A2、A3、A4、A5、A6 单元格输入「苹果汁」「牛奶」「柳橙汁」「巧克力」「牛肉干」,合并 B2:B5 单元格,并输入公式=joinarray(A2:A6,";"),如下图所示:

    1632902365715569.png


    附件列表


    主题: 报表专题
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526