|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
代码如下:
- function 同一传播链(){
- /*思路:逐行扫描原始数据数组arr,并记录到数组s【初始值为空数组】,新扫描的是arr中的当前行c,用c查
- 找上一次扫描记录的s,凡是匹配的项目都记录到数组a。然后,从s中删除a,使s只剩下之前未匹配的项目。
- 再把已经匹配的a和c合并,并记录到数组v。最后,把v添加到更新后的s尾部,传递给下一次循环的s*/
- const arr = Range("b2:c7").Value2;
- acc = arr.reduce((s, c)=>{
- let a = []; //在s中找c,记录到数组a, u[1]).includes(x)
- s.forEach((u,j) => c[1].split("、").some((x) => y = u[1].includes(x) && a.push(s[j])));
- a.forEach((x) => ((k = s.indexOf(x)) > -1) && s.splice(k, 1)); //s中排除a,并更新s
- let v = (a.length == 0) ? c : ( //逗号表达式
- a.push(c),
- (a[0].map((col, i) => a.map((row) => row[i]))).map(x => x.join(";"))
- ); //a与c合并,赋值到新数组v
- return s.push(v), s; //逗号运算符,返回最后的表达式
- },[]);
- acc.unshift(["时间序号", "同一个传播链"]); //数组acc头部插入标题
- Range("b10").Resize(acc.length,2).Value2=acc;
复制代码
|
|