WPS表格中MAKEARRAY函数的深度应用实例

WPS表格中MAKEARRAY函数的深度应用实例

一、函数简介

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

=MAKEARRAY(行数,列数,LAMBDA(r,c,计算公式)),通过应用LAMBDA函数返回指定行和列大小的计算数组。

行数‌:生成数组的行数

列数‌:生成数组的列数

LAMBDA‌:以行号(r)和列号(c)为参数的函数,定义每个单元格的计算规则

二、应用场景实例

场景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)))

‌步骤分解‌:

‌确定行数‌:ROWS(C2:C10)获取原始数据行数

‌设置两列‌:columns=2(原温度 + 转换结果)

‌条件判断‌:

第1列(c=1)直接显示原值

第2列通过公式C×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"))))

‌步骤分解‌:

‌生成31天‌:columns=31

‌日期处理‌:DATE(2025,1,c)创建日期对象

‌周末判断‌:WEEKDAY(...,2)>5识别周六/日

‌格式标记‌:周末日期后添加"✓"符号(结合条件格式设置背景色)

结果如下图所示:

场景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)))

结果如下图所示:

函数优势总结

‌动态数组特性‌:自动填充结果,无需手动拖拽公式

‌灵活处理复杂逻辑‌:可嵌套IF、INDEX、RAND等函数

‌代码简化‌:替代传统需要复杂数组公式的场景

‌数据实时更新‌:当输入数据变化时,结果自动重算

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

广西
浏览 104
收藏
3
分享
3 +1
1
+1
全部评论 1
 
点赞学习
· 广东省
回复