ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何将A列到C列段落连续,后面几列有数的单元格所在列相同的合并到一起

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-12-11 08:17 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 wwdfefgg 于 2024-12-11 08:18 编辑

如何将表1到表6 A列到C列段落连续,后面几列有数的单元格所在的列相同的行,合并到一起,并将合并结果放到表的后面

在表1和表2 中我做了示例

比如下面我框选的这些,A列到C列段落连续,后面有数的单元格所在的列都相同,就可以合并到一起,
单元格数值为0或为空的,一律按 空 处理
1733875657469.png

参考程序可以用,但每次要一个表一个表的把数据复制过去,运行完毕后,又要复制回来,,比较麻烦。

请参照  参考程序,在总表里面做一个按钮,,一键就可以对表1到表6的数据进行合并

每天要处理的数据不同,如果哪个表里没有数据,可以跳过,不用合并。。如果没有满足合并条件的,也可以跳过。

Desktop.rar (96.19 KB, 下载次数: 13)


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-11 16:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
顶起来啊....

TA的精华主题

TA的得分主题

发表于 2024-12-11 18:09 | 显示全部楼层
本帖最后由 shiruiqiang 于 2024-12-11 18:57 编辑

================

TA的精华主题

TA的得分主题

发表于 2024-12-11 18:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 shiruiqiang 于 2024-12-11 18:57 编辑

======================

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-12 04:31 来自手机 | 显示全部楼层
shiruiqiang 发表于 2024-12-11 18:43
======================

顶起来。。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-12-12 16:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
顶起来。。。。。

TA的精华主题

TA的得分主题

发表于 2024-12-12 17:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test()
  2.     Dim r%, i%, m%
  3.     Dim arr, brr, zrr()
  4.     Dim xm$
  5.     Dim d As Object
  6.     Set d = CreateObject("scripting.dictionary")
  7.     With Worksheets("表1")
  8.         r = .Cells(.Rows.Count, 1).End(xlUp).Row
  9.         arr = .Range("a4:j" & r)
  10.         ReDim brr(1 To UBound(arr), 1 To 1)
  11.         For i = 1 To UBound(arr)
  12.             For j = 7 To 10
  13.                 brr(i, 1) = brr(i, 1) & IIf(Len(arr(i, j)) = 0 Or arr(i, j) = 0, "0", "1")
  14.             Next
  15.         Next
  16.         xm = Empty
  17.         s = 0
  18.         m = 0
  19.         For i = 1 To UBound(brr)
  20.             If brr(i, 1) <> xm Or arr(i, 1) <> s Then
  21.                 m = m + 1
  22.                 ReDim Preserve zrr(1 To m)
  23.                 zrr(m) = Array(i, i)
  24.             Else
  25.                 If m > 0 Then
  26.                     zrr(m)(1) = i
  27.                 End If
  28.             End If
  29.             xm = brr(i, 1)
  30.             s = arr(i, 3)
  31.         Next
  32.         ReDim crr(1 To UBound(zrr), 1 To UBound(arr, 2))
  33.         For k = 1 To UBound(zrr)
  34.             crr(k, 1) = arr(zrr(k)(0), 1)
  35.             crr(k, 2) = arr(zrr(k)(0), 2)
  36.             crr(k, 3) = arr(zrr(k)(1), 3)
  37.             For j = 7 To 10
  38.                 For i = zrr(k)(0) To zrr(k)(1)
  39.                     crr(k, j) = crr(k, j) + arr(i, j)
  40.                 Next
  41.             Next
  42.         Next
  43.         .Range("w4").Resize(UBound(crr), UBound(crr, 2)) = crr
  44.                
  45.     End With
  46. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-12-12 17:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
只写了表1的代码。

2024-12-11 test.rar

56.89 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-12-12 19:02 | 显示全部楼层
只有第一个表有规律,第二个表看不懂了
只做第一个表
  1. Sub tt()
  2.     Dim ar, br, i%, j%, r%, c%, n%, m%, rr%
  3.     For Each sh In Sheets
  4.         If sh.Name <> "总表" Then
  5.             With Sheets(sh.Name)
  6.                 r = .UsedRange.Rows.Count
  7.                 c = .UsedRange.Columns.Count
  8.                 ReDim br(1 To 100, 1 To c - 6)
  9.                 If r > 3 Then
  10.                     ar = .[a4].Resize(r - 3, c): rr = 1: m = 0
  11.                     For i = 1 To UBound(ar)
  12.                         n = 0
  13.                         For j = 7 To c
  14.                             If ar(i, j) <> 0 Then
  15.                                 n = n + j
  16.                             End If
  17.                         Next j
  18.                         If i = 1 Then s = ar(i, 1) & ar(i, 2): m = n
  19.                         If n <> m Then
  20.                             s = s & ar(i - 1, 3): s = ar(i, 1) & ar(i, 2): m = n: rr = rr + 1
  21.                         End If
  22.                         For j = 7 To c
  23.                             If ar(i, j) <> 0 Then
  24.                                 br(rr, j - 6) = br(rr, j - 6) + Round(ar(i, j), 2)
  25.                             End If
  26.                         Next j
  27.                         If i = UBound(ar) Then s = s & ar(i, 3)
  28.                     Next i
  29.                 End If
  30.                 .Cells(4, c + 2).Resize(UBound(br), UBound(br, 2)) = br
  31.             End With
  32.             Exit For
  33.         End If
  34.     Next sh
  35. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-12-12 19:25 | 显示全部楼层
本帖最后由 shiruiqiang 于 2024-12-12 19:44 编辑

11楼重新写了一个
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 16:22 , Processed in 0.047223 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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