ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1178|回复: 24

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-25 16:48 | 显示全部楼层 |阅读模式



求助各位大师:编写多个表头与对应数据连接,形成一段话,填写到对应单元格中。VBA代码如何编写?
image.png



附件如下:

【附件1】求助:编写多个表头与对应数据连接,形成一段话,填写到对应单元格中。VBA代.rar

11.63 KB, 下载次数: 17

附件

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 16:52 | 显示全部楼层
参考:
  1. <font face="宋体" size="3">Sub text2()
  2.     For i = 5 To 9
  3.         For j = 1 To 11
  4.             If Cells(i, j) <> "" Then
  5.                c = c & "、" & Format(Cells(i, j), "0.0000")
  6.             End If
  7.         Next
  8.         Cells(i, "L") = Trim(Mid(c, 2))
  9.     Next
  10. End Sub</font>
复制代码

TA的精华主题

TA的得分主题

发表于 2024-3-25 16:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
纯苦力活,用函数可以。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 17:13 | 显示全部楼层
limonet 发表于 2024-3-25 16:56
纯苦力活,用函数可以。

用函数的话,就一个判断数据是否为空,若空,则不显示表头和空值。这一要求,用函数,很长很长

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 17:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
求助大师,我思路有点混乱,如下代码,仅为参考,不灵活,没能完全实现,等待大师帮助
Sub ConnectData()
    Dim i As Integer
    Dim salesDept As String
    Dim customer As String
    Dim fruitTotal As Double
    Dim vegTotal As Double
    Dim result As String

    For i = 5 To 9
        salesDept = Cells(i, 1).Value
        customer = Cells(i, 2).Value
        nam = Cells(i, 3).Value
'        fruitTotal = Cells(i, 3).Value + Cells(i, 4).Value + Cells(i, 5).Value
        fruitTotal = Cells(i, 4).Value + Cells(i, 5).Value + Cells(i, 6).Value
        vegTotal = Cells(i, 6).Value + Cells(i, 7).Value + Cells(i, 8).Value

        result = salesDept & "、" & customer & ":给客户 " & nam & " 售出共 " & fruitTotal & "kg, 水果 " & fruitTotal & "kg (" & Cells(i, 3).Value & "kg, " & Cells(i, 4).Value & "kg, " & Cells(i, 5).Value & "kg)。"
        If vegTotal > 0 Then
            result = result & " 蔬菜 " & vegTotal & "kg (" & Cells(i, 6).Value & "kg, " & Cells(i, 7).Value & "kg, " & Cells(i, 8).Value & "kg)。"
        End If

        Cells(i, 12).Value = result
    Next i
End Sub

TA的精华主题

TA的得分主题

发表于 2024-3-25 17:30 | 显示全部楼层
函数:=A5&"、"&B5&":给客户"&C5&"售出共"&K5&"kg,水果"&G5&"kg"&"("&TEXTJOIN("、",,MAP(D$4:F$4&D5:F5&"kg",LAMBDA(x,IF(ISNUMBER(--MID(x,FIND("kg",x)-1,1)),x,""))))&IF(J5<>"",");蔬菜"&J5&"kg("&TEXTJOIN("、",,MAP(H$4:I$4&H5:I5&"kg",LAMBDA(x,IF(ISNUMBER(--MID(x,FIND("kg",x)-1,1)),x,"")))),"")&")。"
image.jpg

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-3-25 17:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 17:44 | 显示全部楼层
本帖最后由 Excel2119 于 2024-3-25 17:45 编辑
  1. <blockquote>Sub text02()
复制代码


恳请大师帮助修改

恳请大师帮助修改

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 17:52 | 显示全部楼层

感谢大师,我的思路好像和您的有点像,代码如下:

  1. Sub text02()


  2.     For i = 5 To 9
  3.         序号 = Cells(i, 1).Value
  4.         销售部 = Cells(i, 2).Value
  5.         客户 = Cells(i, 3).Value

  6.         水果小计 = Cells(i, 7).Value
  7.         蔬菜小计 = Cells(i, 10).Value
  8.         
  9.         合计 = Cells(i, 11).Value
  10.         
  11.         '-----------恳请大师修改以下代码,实现自动判断数据是否为空或0,若是,则该数据及对应表头不显示在内容中-------
  12.         
  13.         连接合并 = 序号 & "、" & 销售部 & ":给客户 " & 客户 & " 售出共 " & 合计 & "kg 商品, 其中:水果 " & 水果小计 & "kg (" _
  14.             & Cells(4, 4).Value & Cells(i, 4).Value & "kg, " _
  15.             & Cells(4, 5).Value & Cells(i, 5).Value & "kg, " _
  16.             & Cells(4, 6).Value & Cells(i, 6).Value & "kg)。"
  17.         
  18.         If 蔬菜小计 > 0 Then
  19.             连接合并 = 连接合并 & " 蔬菜 " & 蔬菜小计 & "kg (" _
  20.                 & Cells(4, 8).Value & Cells(i, 8).Value & "kg, " _
  21.                 & Cells(4, 8).Value & Cells(i, 9).Value & "kg)。"
  22.         End If
  23.         
  24.         '------------------------------------------------------------------------------------------------------------------
  25.         
  26.         Cells(i, 12).Value = 连接合并
  27.         
  28.     Next i
  29.    
  30. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-25 17:59 | 显示全部楼层
limonet 发表于 2024-3-25 17:30
函数:=A5&"、"&B5&":给客户"&C5&"售出共"&K5&"kg,水果"&G5&"kg"&"("&TEXTJOIN("、",,MAP(D$4:F$4&D5:F5 ...

感谢limonet老师用函数实现,我举这个案例是在工作经常用的,比如:根据勘界数据编制征地协议等。在数据较多时,用函数可能会慢点。感谢limonet老师。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 21:42 , Processed in 0.055292 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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