金山WPS

关注公众号 jb51net

关闭
软件教程 > 办公软件 > 金山WPS >

makearray函数怎么用? WPS表格中MAKEARRAY函数的深度应用实例

脚本之家

AKEARRAY函数是一种用于创建自定义数组的函数。它接受两个参数,一个是行数,另一个是列数,然后返回一个指定大小的二维数组。这个函数非常适合在需要手动创建数组结构的情况下使用,比如填充特定的模式或者生成重复的数据。下面我们来分享WPS表格中MAKEARRAY函数的深度应用实例

一、函数简介

MAKEARRAY是WPS表格中的动态数组函数,用于‌根据自定义规则生成指定行列数的二维数组‌。其语法为:

使用MAKEARRAY函数的注意事项

二、应用场景实例

场景1:生成动态乘法表

‌需求‌:快速创建9×9乘法表,避免手动输入公式。

‌公式‌:=MAKEARRAY(9,9,LAMBDA(r,c,IF(c<=r,r&"×"&c&"="&r*c,"")))

‌步骤分解‌:

‌设置行列范围‌:r=9, c=9

‌定义LAMBDA规则‌:每个单元格显示r×c=结果格式(r为当前行号,c为当前列号),用IF来判断列小于等于行号时,就显示该列的数据,否则就为空值。

‌自动填充‌:无需拖拽公式,自动生成完整乘法表

具体结果如下图所示:

场景2:批量转换温度单位

‌需求‌:将A列中的摄氏温度(C2)批量转换为华氏度,并生成两列数据(原值+转换值)。

公式‌:=MAKEARRAY(ROWS(C2:C10),2,LAMBDA(r,c,IF(c=1,INDEX(C2:C10,r),INDEX(C2:C10,r)*9/5+32)))

‌步骤分解‌:

‌条件判断‌:

‌输出效果‌:

场景3:动态考勤表标记周末

‌需求‌:生成2024年1月的考勤表,自动标记周末为灰色背景。

‌公式‌:=MAKEARRAY(1,31,LAMBDA(r,c,IF(WEEKDAY(DATE(2025,1,c), 2)>5,TEXT(c, "dd") & "✓",TEXT(c, "dd"))))

‌步骤分解‌:

结果如下图所示:

场景4:随机验证码生成器

‌需求‌:为员工批量生成8位包含大小写字母+数字的随机验证码。

公式=MAKEARRAY(10,1,LAMBDA(r,c,TEXTJOIN("",TRUE,MAKEARRAY(1,8,LAMBDA(_,__,MID("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",RANDBETWEEN(1,62),1))))))

‌关键技术点‌:

‌嵌套MAKEARRAY‌:外层生成10个验证码,内层生成8个字符‌随机字符选择‌:通过RANDBETWEEN(1,62)从62个字符中随机选取‌拼接字符串‌:TEXTJOIN将8个字符合并为1个验证码。

结果如下图所示:

场景5:数据抽样(随机不重复编号)‌

‌需求‌:从1——100中随机抽取10个不重复的编号。

公式:=LET(s,SORTBY(SEQUENCE(100),RANDARRAY(100)),MAKEARRAY(10,1,LAMBDA(r,c,INDEX(s,r))))

结果如下图所示:

场景6:生成动态日历‌

‌需求‌:生成2025年当月的日历矩阵(按周分布)。

‌公式‌:=MAKEARRAY(6,7,LAMBDA(r,c,LET(d,DATE(TEXT(TODAY(),"yyyy"),TEXT(TODAY(),"m"),1)+(r-1)*7+(c-1),IF(MONTH(d)=--TEXT(TODAY(),"m"),DAY(d),""))))

结果如下图所示:

场景7:行列求总和

需求:生成每行总和和每列总和

公式:=MAKEARRAY(5,6,LAMBDA(r,c,IFS(r*c=30,SUM(B2:F6),c=6,SUM(INDEX(B2:F6,r,)),r=5,SUM(INDEX(B2:F6,,c)),AND(r<5,c<=6),INDEX(B2:F6,r,c))))

结果如下图所示:

场景8:多行多列查找引用

需求:一次性引用多行多列数据

公式:=MAKEARRAY(2,5,LAMBDA(r,c,XLOOKUP(INDEX(H2:H3,r),A2:A5,INDEX(B2:F5,,c))))

结果如下图所示:

场景9:表格转置,汇总数据并排序

需求:把二维表转置为多维表格形式,并对数据进行汇总求和后排序。

公式:=LET(s,SORTBY(UNIQUE(A2:A13),SUMIFS(C2:C13,A2:A13,UNIQUE(A2:A13)),-1),w,TOROW(UNIQUE(B2:B13)),h,HSTACK("产品种类",w),m,MAKEARRAY(ROWS(s),COLUMNS(w),LAMBDA(a,b,SUMIFS(C2:C13,A2:A13,INDEX(s,a),B2:B13,INDEX(w,b)))),VSTACK(h,HSTACK(s,m)))

结果如下图所示:

场景10:多维数据汇总

公式:=LET(u,UNIQUE(B3 :B12),w,TOROW(UNIQUE(C3:C12)),h,HSTACK("姓名",w),m,MAKEARRAY(ROWS(u),COLUMNS(w),LAMBDA(r,c,CONCAT(FILTER(D3:D12,(B3:B12=INDEX(u,r))*(C3:C12=INDEX(w,c)),"")))),VSTACK(h,HSTACK(u,m)))

结果如下图所示:

函数优势总结

通过以上实例可以看到,MAKEARRAY在处理‌批量数据生成、格式转换、动态模板创建‌等场景中具有显著优势,特别适合需要结合行列索引进行复杂计算的场景。