这个数据清洗,函数简洁,JSA宏优雅!



Lv.2潜力创作者
今天我们学点简单的,看一位网友的问题,简单函数搞定!
看到这个其实是一个常见问题!这里我们先通过函数给大家处理一下,然后给一下JSA等其他解法!
▍简单函数解法
=REDUCE(A1:B1,B2:B4,LAMBDA(x,y,
VSTACK(x,IF({1,0},OFFSET(y,,-1),TEXTSPLIT(y,,CHAR(10)))))
)公式难度不大,很多同学可能都看到IF({1,0} 这个结构一直搞不懂,这里推荐看我保姆级底层原理详细解读! 主要还是数组的广播机制!
如果你觉得这样不好理解!
=REDUCE(A1:B1,B2:B4,LAMBDA(x,y,VSTACK(x,
IFNA(HSTACK(OFFSET(y,,-1),TEXTSPLIT(y,,CHAR(10))),
OFFSET(y,,-1)))
)
)这里的核心,我们通过简单案例一看你就懂了!
我们把一个元素和1列多行的数据左右HSTACK合并,单个元素剩下的会出现 #NA错误!
这个时候我们可以利用IFNA容错函数,把错误值填充为A即可!相对于IF
函数的{1,0}用法,新手应该更好理解这个!
然后我们也给一下JSA的解法吧!
▍WPS-JS宏解法
WPS宏已经支持到ES6,各种现代化语法都支持,写起来也对象简洁一些,但是很多同学还是使用传统的for循环,可以试试新语法!
核心10行代码即可搞定!
function 拆分填充_E精精() {
const ws = ActiveSheet;
const [title, ...data] = ws.Range("A1").CurrentRegion.Value2;
let cate = "";
// 利用 flatMap 配合逻辑赋值运算符,简洁
const res = data.flatMap(([c, n]) =>
(cate = c || cate, n.split('\n').map(v => [cate, v]))
);
// 清空历史数据并回写
ws.Range("D1").CurrentRegion.ClearContents();
ws.Range("D1").Resize(res.length + 1, 2).Value2 =
[title, ...res];
}大家可以自己动手试试哈!今天的内容就到这里!VBA今天就不写,也是基础的循环,只是代码量要多一些,对了,现在AI时代,你也可以让AI帮你写一个试试额!
▍精华帖
标题 | 链接 |
WPS高级用法,本地云端数据双向同步! | |
WPS Query深度实战案例体验! | |
多维表Python网络请求偶错问题 | |
多维表发票AI智能识别统计系统-我的AI魔法时刻 | |
母亲节日期计算,我提供两种方法,学习一下日期相关函数及数组! | |
全程零代码!只需动动嘴,WPS 灵犀就帮我把进销存全搞定了。 | |
就这统计汇总,难倒办公室一群同事,透视表玩不了 | |
70万数据汇总效率极限测试!JSA+Pandas! | |
别再死守 VBA 了!WPS JS 宏(JSA)迁移全攻略:避坑与进阶指南 | |
微软Power Query太“重”?WPS Query轻量级数据清洗了解一下! | |
WPS这5个不起眼的小变化,正在改变你的办公习惯,更智能了! | |
WPS也上“龙虾”了?接入小米自研大模型,灵犀Claw实测:真香 | |
重磅消息!WPS也上Power Query啦? 深度体验! | |
智能文档附件压缩了吗? | |
WPS接入DeepSeek本地大模型全攻略 | |
WPSAI函数,言出法随的时代来临! | |
WPSAI函数测试反馈 | |
WPS+DeepSeek,办公效率直接起飞! | |
TextEdit的Multiline属性缺失 | |
WPS排名公式总结 |