Make:制造,生成
Array:数组
函数MAKEARRAY:创建数组。
=MAKEARRAY(行数,列数,LAMBDA())
行数和列数分别用于指定所要创建数组的行数和列数,必须是正整数。
数组内容则由LAMBDA决定。
如下公式表示创建一个3行6列的数组,数组元素是100:
=MAKEARRAY(3,6,LAMBDA(x,y,100))
数组元素可以是数字,字符,文本……具体是什么取决于需求:
=MAKEARRAY(3,6,LAMBDA(x,y,"红"))
随机颜色二维数组
如果仅限于填充固定值那未免也太无聊了点,别忘了LAMBDA中可以调用更多函数来自由定义要实现的功能,这就给了用户极大的发挥空间。
结合CHOOSE和RANDBETWEEN实现用随机颜色填充:
=MAKEARRAY(3,6,LAMBDA(x,y,CHOOSE(RANDBETWEEN(1,3),"红","黄","蓝")))
九九乘法表
对于大部分普通用户来说,二维数据的运算和查找引用就是中等复杂程度,而MAKEARRAY通常用于创建数组并参与到更复杂的计算中,这就注定它不会被大面积推广。
制作九九乘法表是它最经典的应用。
创建一个9行9列的数组:
=MAKEARRAY(9,9,LAMBDA(x,y,x))
LAMBDA计算式x表示直接输出其行号x.如果所示其结果是依次输出1~9.
行号和列号默认为从1开始以1递增的数组序列,这是引用MAKEARRAY行列号的关键要点。
把行号,列号,以及它们的乘积三者连接,就得到九九乘法表的雏形:
=MAKEARRAY(9,9,LAMBDA(x,y,x&"x"&y&"="&x*y))
上图中红色字体部分是不需要出现的数据,仔细观察其规律:行号小于列号。
于是有了方向:当行号小于列号时输出空,否则输出才输出乘法表达式。
在LAMBDA计算表达式中再添加IF函数实现这一逻辑:
=MAKEARRAY(9,9,LAMBDA(x,y,IF(x<y,"",x&"x"&y&"="&x*y)))
重复文本
将A列的文本按B列数字重复:
=MAKEARRAY(COUNTA(A:A),MAX(B:B),LAMBDA(x,y,IF(y>INDEX(B:B,x),"",INDEX(A:A,x))))
公式的关键在于根据列号与数字的对比结果来输出指定文本或空值。需要充分理解前文中提到的“行号和列号默认为从1开始以1递增的数组序列” 这一要点。
联系客服