无忧启动论坛

标题: 坛子里面有excel高手吗?请教一个多表合并同类项的问题 [打印本页]

作者: chinaren12    时间: 2023-12-9 11:11
标题: 坛子里面有excel高手吗?请教一个多表合并同类项的问题


我有十多个这样的表。撇除日期和事由,我想把其中的所有的同类“事项”合并到一起,然后后面的数量累加,金额累加。

合并到一个表里面,请问各位大佬,这个要如何搞?

一个表一个表这样子合并太麻烦了。还得手动合并。

有没有能自动合并的方法或者是vba???

求各位帮忙了。



作者: 邪恶海盗    时间: 2023-12-9 11:25
看起来还有很多地方没有表达清楚,撸主是不是应该拿两个原始数据表和一个完成的数据表演示一下?
作者: busyman    时间: 2023-12-9 11:28
事项用升序或降序排列就会出现同类事项在一起了。
作者: chinaren12    时间: 2023-12-9 11:30
邪恶海盗 发表于 2023-12-9 11:25
看起来还有很多地方没有表达清楚,撸主是不是应该拿两个原始数据表和一个完成的数据表演示一下?

如上图所示,简单点讲就是把事项中所有相同的项目合并到一起,并把数量和金额累加到一起。

只不过是我有十多个这样的表。单表合并很容易,多表合并有点麻烦。
作者: chinaren12    时间: 2023-12-9 11:32
busyman 发表于 2023-12-9 11:28
事项用升序或降序排列就会出现同类事项在一起了。

后面连着数量和金额呀,而且得合并同类项,还有多表一起合并呀
作者: 2012yishuihana    时间: 2023-12-9 11:46
多表合并建议power query
作者: yyz2191958    时间: 2023-12-9 11:48
进来谢谢
作者: freehead88    时间: 2023-12-9 11:51
你把excel原文件发上来,我给答案你

作者: freehead88    时间: 2023-12-9 11:55
很简单的,一个xlookup和sumif就可以搞定的问题

作者: 邪恶海盗    时间: 2023-12-9 11:55
chinaren12 发表于 2023-12-9 11:30
如上图所示,简单点讲就是把事项中所有相同的项目合并到一起,并把数量和金额累加到一起。

只不过是我 ...

此时应该上神器:

作者: kyowjg    时间: 2023-12-9 11:58
方方格子解忧愁
作者: chinaren12    时间: 2023-12-9 12:07
2012yishuihana 发表于 2023-12-9 11:46
多表合并建议power query

power query没有合并到一个表呀,原来多少个表现在就是多少个表。
作者: zpwz    时间: 2023-12-9 12:30
学习了
作者: yyz2191958    时间: 2023-12-9 12:35
kyowjg 发表于 2023-12-9 11:58
方方格子解忧愁

什么意思?
作者: linshi456    时间: 2023-12-9 12:38
yyz2191958 发表于 2023-12-9 12:35
什么意思?

方方格子是Excel工具。我没用过,看官网还不错,貌似有合并功能
作者: linshi456    时间: 2023-12-9 12:39
你先找个Excel工具把表格合并起来,用Excel数据透视表分类统计。
作者: yyz2191958    时间: 2023-12-9 12:39
linshi456 发表于 2023-12-9 12:38
方方格子是Excel工具。我没用过,看官网还不错,貌似有合并功能

惭愧 我孤陋寡闻
作者: lbw2007    时间: 2023-12-9 13:04
用sumif公式就可以
作者: 无忧大侠    时间: 2023-12-9 13:09
数据透视表
作者: chinaren12    时间: 2023-12-9 13:21
无忧大侠 发表于 2023-12-9 13:09
数据透视表

数据透视表不正确,本来应该是累加的,结果他把数量和金额加一起了。
作者: wanchr    时间: 2023-12-9 13:27
=FILTER(a2:f1000,b2:b1000=G1,""),G1单元格里放事项内容,G2里放公式,注意你要有office2019以上办公软件,wps2019可能也行。
作者: cao8mm    时间: 2023-12-9 14:36
power query
作者: captain_g    时间: 2023-12-9 14:49
楼主先要讲清工作表还是工作簿?
十多个工作表在同一个工作簿中还是不同工作簿中?
假设它们在不同工作簿(不同的xlsx)中;
先在某工作簿的工作表中插入命令控件,拟写宏代码,将其它工作簿中的工作表数据读入当前工作表(事先整理好列的顺序);
然后利用EXCEL【自带功能】,比如根据”事项“列的数据”kk",将所有kk对应的金额相加,合并掉同”事项“的行;
作者: 51xp    时间: 2023-12-9 14:51
放示例表与结果对照表,让需求更明确。
作者: captain_g    时间: 2023-12-9 15:45
上个实例,不知是不是与楼主想实现的类似;

楼主可以看一下控件对应的宏代码;

示例.zip

18.58 KB, 下载次数: 16, 下载积分: 无忧币 -2


作者: martin313    时间: 2023-12-9 16:33


方方格子 经典啊

我整理机翻电影字幕,都可以用到它
作者: fango    时间: 2023-12-9 16:49
这个很多个文件合并到一起,如果文件名有规律是可以直接用函数实现,如果文件名随意。那真是Power query才好用了,或许第三方也有
作者: chinaren12    时间: 2023-12-9 17:27
51xp 发表于 2023-12-9 14:51
放示例表与结果对照表,让需求更明确。

就是不好放原始表格罗。不过我通过楼上的方方格子已经完美的解决问题了。
作者: yunzhang    时间: 2023-12-9 17:52
这个直接用Execl的函数应该可以,有些函数可跨表使用。可惜近二十年没用都忘记了!
作者: hilsonma    时间: 2023-12-9 20:41
以下内容来自网络,我之前遇到类似问题在网络上找到的:

快速合并单个excel文件中的多个工作表

多个工作表的excel文件,要将数据合并到一个工作表,可利用excel的宏计算来解决这个问题。

首先移到工作表标签的最后,插入新工作表。

右键点击新工作表标签,点查看代码,然后看到代码页面。

把下面的代码复制到代码页面


Sub 合并当前工作簿下的所有工作表()
Application.ScreenUpdating = False
For j = 1 To Sheets.Count
   If Sheets(j).Name <> ActiveSheet.Name Then
       X = Range("A65536").End(xlUp).Row + 1
       Sheets(j).UsedRange.Copy Cells(X, 1)
   End If
Next
Range("B1").Select
Application.ScreenUpdating = True
MsgBox "当前工作簿下的全部工作表已经合并完毕!", vbInformation, "提示"
End Sub


在代码页面点击工具栏上面的 运行 ,点击 运行子过程/用户窗体 。

代码运行到最后会提示合并完毕。点确定后关闭代码页面。

新工作表中会出现合并后的结果。


现在很多人用的WPS无法实现这个计算,只有功能健全的microsoft excel可以。
作者: 2011mking    时间: 2023-12-10 10:38
就是用数据透视表就可以了



作者: softwarezheng    时间: 2023-12-10 11:53
谢谢
作者: 马荣华    时间: 2023-12-10 14:20
chinaren12 发表于 2023-12-9 13:21
数据透视表不正确,本来应该是累加的,结果他把数量和金额加一起了。

那是你没设计好透视表,透视表也能达到你的要求。
作者: endy329    时间: 2023-12-12 08:30
用sumifs试试
作者: softwarezheng    时间: 2023-12-12 08:51
谢谢
作者: jpt    时间: 2023-12-12 09:15

作者: 云归    时间: 2023-12-12 12:10
打开Excel表格,选择需要合并同类项的单元格区域。在菜单栏中点击“数据”选项,并选择“分类汇总”功能。在弹出的对话框中,将“分类字段”设置为需要合并的列名,将“汇总方式”设置为需要执行的操作(例如求和、平均值等),然后点击“确定”按钮即可完成合并同类项的操作。
作者: likeyouli    时间: 2023-12-13 22:00
本帖最后由 likeyouli 于 2023-12-14 14:38 编辑
hilsonma 发表于 2023-12-9 20:41
以下内容来自网络,我之前遇到类似问题在网络上找到的:

快速合并单个excel文件中的多个工作表

vba完全可以实现,工作表还是工作簿,无非是需要不需要再次open的问题,,
可惜我来晚了,,之前曾向h大请教过多个问题,,话说貌似h大的vba水平没我厉害啊  大体思路:第一步,不管是多个工作表还是工作簿,都先复制合并到一个工作表里,注意标题别合并重复。假如,工作簿,保存在d盘ceshi文件夹下,
  1. Sub 合并工作簿()
  2. Dim ss$, t As Workbook
  3. ss = Dir("D:\ceshi")
  4. Do
  5. If ss <> ThisWorkbook.Name Then
  6. Set t = Workbooks.Open("D:\ceshi" & ss)
  7. c = c + 1
  8. If c = 1 Then
  9. Range("a1").CurrentRegion.Copy ThisWorkbook.Sheets(1).Range("a1")
  10. Else
  11. 'Range("a2", Selection.SpecialCells(xlCellTypeLastCell)).Select
  12. 'Range("a2", Selection.SpecialCells(xlCellTypeLastCell)).Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, "a").End(xlUp).Offset(1, 0)
  13. Range("a1").EntireRow.Delete
  14. Range("a1").CurrentRegion.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, "a").End(xlUp).Offset(1, 0)
  15. End If
  16. t.Close False
  17. End If
  18. ss = Dir
  19. Loop Until ss = ""
  20. MsgBox "恭喜,已合并完成!!"
  21. End Sub
复制代码

     第二部,解决累加的问题,以事项作为字典,数量和金额累加,,当然到了这步,不用vba,函数也完全可以解决
刚回头看了下,代码竟然和复制的不一样:
Sub 合并工作簿()
Dim ss$, t As Workbook
ss = Dir("D:\ceshi\")
Do
If ss <> ThisWorkbook.Name Then
Set t = Workbooks.Open("D:\ceshi\" & ss)
c = c + 1
If c = 1 Then
Range("a1").CurrentRegion.Copy ThisWorkbook.Sheets(1).Range("a1")
Else
Range("a2", Selection.SpecialCells(xlCellTypeLastCell)).Select
Range("a2", Selection.SpecialCells(xlCellTypeLastCell)).Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, "a").End(xlUp).Offset(1, 0)
End If
t.Close
End If
ss = Dir
Loop Until ss = ""
MsgBox "恭喜,已合并完成!!"
End Sub

ceshi后边少了\



作者: likeyouli    时间: 2023-12-13 22:07
2011mking 发表于 2023-12-10 10:38
就是用数据透视表就可以了

楼主说是10多个表,假如几百上千个表,每个都这样手工透视 ?
作者: hehuiying    时间: 2024-4-21 21:25
谢谢分享




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3