ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: Excel2119

[求助] 急求助大师:Excel多个表头与对应数据连接,形成一段话,填写到对应单元格中。VBA...

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-25 18:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Excel2119 发表于 2024-3-25 17:59
感谢limonet老师用函数实现,我举这个案例是在工作经常用的,比如:根据勘界数据编制征地协议等。在数据 ...

这需求有点意思。
(单纯好奇)直接在原表格中不就能看到那些数字了么?就算要汇总,加一个汇总行/列就行了,为啥要改成口语输出?

TA的精华主题

TA的得分主题

发表于 2024-3-25 19:02 | 显示全部楼层
做起来还挺麻烦的

TA的精华主题

TA的得分主题

发表于 2024-3-25 19:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
是不是这个效果?
录制_2024_03_25_19_00_40_871.gif

TA的精华主题

TA的得分主题

发表于 2024-3-25 19:03 | 显示全部楼层
JSA代码,由于单位办公软件换WPS,不能用Office,现阶段由VBA全面转JSA
  1. function 数据连接(){
  2.         let arr=Range("a3:k9").Value2;
  3.         let obj={},key;
  4.         let [bt1,bt2]=[arr[0],arr[1]];
  5.         for (let i=3;i<bt1.length-1;i++){
  6.                 if (bt1[i]!=null) key=bt1[i];
  7.                 let temp=obj[key]=obj[key] || [];
  8.                 temp.push([bt2[i],i]);
  9.         }
  10.         let res=[],k=-1;
  11.         arr.slice(2).forEach(x=>{
  12.                 let s1=`${x[0]}、${x[1]}:给客户${x[2]}售出共${x[x.length-1]}kg,`;
  13.                 let tp=[];
  14.                 for (let key in obj){
  15.                         let temp=obj[key];
  16.                         let n=temp[temp.length-1][1];
  17.                         if (x[n]==null) continue;
  18.                         let s2=`${key}${x[n]}kg(`;
  19.                         let s3=temp.reduce((ar,[a,b])=>(a!="小计" && x[b]!=null?ar.push(`${a}${x[b]}kg`):null,ar),[]).join("、") + ")";
  20.                         tp.push(s2+s3);
  21.                 }
  22.                 res[++k]=[s1 + tp.join(";") + "。"];
  23.         });
  24.         Range("l5").Resize(res.length,1).Value2=res;
  25. }
复制代码

TA的精华主题

TA的得分主题

发表于 2024-3-25 19:04 | 显示全部楼层
附件在此,WPS测试

数据连接.zip

25.03 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-3-25 19:47 | 显示全部楼层
练习!!!!!!!

1.rar

19.05 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-3-25 20:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
就是一个力气活。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 21:39 | 显示全部楼层
ykcbf1100 发表于 2024-3-25 20:18
就是一个力气活。

圣侠也试试呗,我感觉还真不只是力气活,有难度

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-27 15:16 | 显示全部楼层
LIUZHU 发表于 2024-3-25 19:04
附件在此,WPS测试

我花了五六个小时用VBA实现了,也增加了些其他功能,比如先合并数据》添加标点符号》根据合并内容批量制作合同》根据已签合同制作档案备份等……。因内容与工作的保密性有关,因此无法分享。我抽时间以本帖主题举例发帖吧。  谢谢老师分享jsa代码,说实话我没接触过,jsa代码看不懂。wps用的次数少,我还是习惯用msoffice……

TA的精华主题

TA的得分主题

发表于 2024-3-27 15:34 | 显示全部楼层
Excel2119 发表于 2024-3-27 15:16
我花了五六个小时用VBA实现了,也增加了些其他功能,比如先合并数据》添加标点符号》根据合并内容批量制 ...

JSA和VBA的大多数代码差不多,特别是Application对象想的方法和属性和VBA基本上完全一样。不同的是,JSA有很多JavaScript的内置对象,比如数组、对象等,其实VBA的核心玩法不就是“数组+字典+正则”么,JSA也一样,也是“数组+对象+正则”,正则方面都差不多,字典方面,JS的对象比VBA的字典灵活多了,数组方面,那根本不是一个级别的,如果VBA的数组是小学生,那JS的数组就是博士生。当然JS的数组比起Python的Pandas库的DataFrame,好像又差点意思。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 19:26 , Processed in 0.038574 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表