152、Excel 365新增函数介绍之三---MAKEARRAY函数 MAKEARRAY函数可以生成指定行数和列数的数组,并且可以利用行数和列数信息进行运算。语法结构为:(截图来自Excel自带的帮助)生成数组时,rows(要生成的数组行数)从1开始垂直向下递增,cols(要生成的数组列数)从1开始水平向右递增。函数应用示例1、拆分单列数据为多行多列。如下图所示,A列中放置了字母,现在要将这列字母拆分为4行6列的数组区域。C26单元格中的公式为“=MAKEARRAY(4,6,LAMBDA(x,y,INDEX(A26:A51,4*y-4+x)))”,C32单元格中的公式为“=MAKEARRAY(4,6,LAMBDA(x,y,INDEX(A26:A51,6*x-6+y)))”。公式中参数4*y-4+x按垂直方向生成序列,一列生成完了再生成下一列,参数6*x-6+y为按水平方向生成序列,一行完成了再生成下一行。结果如下图所示,注意查看数组拆分时的方向。(总结:如果行数为r,列数为c,那么按垂直方向生成序列时,index的第二参数为r*y-r+x;按水平方向生成序列时,index的第二参数为c*x-c+y)。2、应用MAKEARRAY函数创建乘法表。在任意单元格中输入“=MAKEARRAY(9,9,LAMBDA(x,y,IF(x>=y,x&"×"&y&"="&x*y,"")))”,便可生成九九乘法表,当然如果想要生成其它的,可以直接更改行数/列数的参数值就可以了。结果如下图所示:3、在“146、单元格数据信息整理拆分”这一节中,介绍了拆分单元格为多列的一些方法,当然也可以使用MAKEARRAY进行拆分。如下图所示,要将A列中的信息进行拆分,然后分列存放。 在C1单元格中输入"=VSTACK(HSTACK("姓名","性别","出生日期","部门","科室","职位","入职日期"),LET(行数,COUNTA(A:A)-1,列数,LEN(A2)-LEN(SUBSTITUTE(A2,",",""))+1,MAKEARRAY(行数,列数,LAMBDA(x,y,INDEX(TEXTSPLIT(TEXTJOIN(",",TRUE,OFFSET(A1,1,,行数)),,","),列数*x-列数+y)))))"。使用let函数定义行数/列数,并根据A数据动态获取行数/列数的值(行数,COUNTA(A:A)-1,列数,LEN(A2)-LEN(SUBSTITUTE(A2,",",""))+1),使用TEXTJOIN函数利用分隔符“,”将A列的数据进行合并(TEXTJOIN(",",TRUE,OFFSET(A1,1,,行数))),然后使用从TEXTSPLIT将合并后的数据进行拆分,接着使用MAKEARRAY函数将拆分后的数据分成需要的行数/列数数组区域,利用index返回需要的数据信息。将生成的数组区域与使用HSTACK函数生成的标题行通过VSTACK函数按垂直方向进行追加,得到最终表格。其结果如下图所示: 通过参数创建的函数,在A列中的值进行更新时,C1单元格中的公式也会自动溢出到相应的区域。 上边示例中有些公示看起来比较复杂,但只要分段进行理解也是比较简单的,可以拆开一段一段的去进行验证,这样就会很快掌握相关参数的含义及其运用了。