MAKEARRAY()可以用来创建自定义数组,它的基本语法结构为:
MAKEARRAY(rows,cols, lambda(row, col))
可以看出,它的参数只有两个,一个是行数,一个是列数,具体数组的内容就取决于Lambda()函数了。以下通过两个案例来了解其运行过程。
案例1:创建九九乘法表
九九乘法表大家都很熟悉,创建它的方法也很多,以下就是使用MAKEARRAY()的方法来创建。下面链接中知乎的文章里介绍了三种方法。https://zhuanlan.zhihu.com/p/1933896976518330053
创建九九乘法表的公式为:
=MAKEARRAY(9,9,LAMBDA(r,c,IF(r>=c,c&"×"&r&"="&r*c,"")))
里面界定了行数为9,列数也为9,IF(r>=c,c&"×"&r&"="&r*c,"")指的是如果行号>=列号,那么该单元格所生成的内容就是:
“列号” x “行号” = “行号*列号”,否则为空。
为更好的理解 ,我把运算过程更细化一下,9行可以用公式sequence(9,1)代替,9列可以用sequence(1,9)代替, r>=c, 就可以替换为:
sequence(9,1)>=sequence(1,9)
案例2:按要求转换下面的格式

资料来源:https://www.zhihu.com/question/660118232/answer/3578190578
可以看出,这个转换不仅是要将原始的8行3列转换成3行8列,而且单元格的顺序也是倒过来的,先取第3列,再取第2列,最后取第1列,并且每列当中,先取最后一个,再取倒数第2个...
以下截图对规律作了总结,如11行至13行所示,这里列出了新数组中要提取的原始数据(单元格区域A2:C9)中的行和列,如第一个单元格,它要提取的是第8行,第3列,第2个单元格要提取的是第7行,第3列,依次类推
新数组的行数为3,设为变量x, 列数为8,设为变量y, 列的规律(从左至右)就是9-y,
当y=1,2,3,4,5,6,7,8时,
9-y=8,7,6,5,4,3,2,1
行的规律就是4-x,
当x=1,2,3时,4-x=3,2,1
因此可以使用以下公式:
=MAKEARRAY(3,8,LAMBDA(x,y,INDEX(A2:C9&"",9-y,4-x)))

