ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 汇总

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-6-4 11:01 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1.工作簿中按照特定关键词隐藏个别工作表http://club.excelhome.net/thread-1580045-1-1.html
2.多个工作簿合并
http://club.excelhome.net/thread-1580012-1-1.html
3.根据汇总表自动匹配数据到对应表名对应标题,以及数据汇总
http://club.excelhome.net/thread-1576867-1-1.html
4.每个工作表中在某一列自动生成序号
http://club.excelhome.net/thread-1576627-1-1.html
5.数据快速录入设置
http://club.excelhome.net/thread-1576390-1-1.html
6.有关批量打印设置
http://club.excelhome.net/thread-1575654-1-1.html
7.提取阿拉伯数字以及大写数字,或者按照特定拼音转为特定中文
http://club.excelhome.net/thread-1575130-2-1.html
8.当表一ABC三列条件一致时,汇总金额到汇总表,并且要合并E列文字到汇总表
http://club.excelhome.net/thread-1571903-1-1.html
9.同一文件夹下,多层子文件夹工作簿汇总在总表里面
http://club.excelhome.net/thread-1558181-2-1.html
10.多个工作表中将某一列求和将值罗列在汇总表中(形式:表名+求和值)
http://club.excelhome.net/thread-1557488-1-1.html
11.在inputbox输入某时间段,系统可以自动汇总在其他表中B列日期包括等于这段时间段内的数据到汇总表中
http://club.excelhome.net/thread-1552794-1-1.html
12.以人名为关键字眼,将每个表中的数据汇总累计相加到对应位置(标题)
http://club.excelhome.net/thread-1549958-1-1.html
13.统计某个关键词在哪些表中出现过多少次
http://club.excelhome.net/thread-1548953-1-1.html
14.统计101-109班的学生某些项目金额出现的次数
http://club.excelhome.net/thread-1542774-1-1.html
15.除汇总表外,选中背景颜色为红色的所有行,粘贴在汇总表里面
http://club.excelhome.net/thread-1538666-1-1.html
16.A:根据汇总表D列的(班级)匹配到对应表名,并且在找到的对应表里面,匹配到姓名一致那一栏
    B:将汇总表的数据按照各个表的抬头,将其复制到对应位置
http://club.excelhome.net/thread-1537283-1-1.html
17.当J列不等于935,或者“”值时,将不相等单元格标黄
http://club.excelhome.net/thread-1534397-1-1.html
18.统计所有表格名称及各项目出现次数
  1. Sub 统计()
  2. Dim i&, k&
  3. Sheets.Add.Name = "汇总"
  4. Dim ws As Worksheet
  5. Worksheets("汇总").Range("A2", Range("A65536").End(xlUp)).ClearContents '单元格的公式,但保留其格式设置
  6. For Each ws In Worksheets
  7.     If ws.Name <> "汇总表"and ws.Name <> "汇总"And ws.Visible = -1Then
  8.         k = k + 1
  9.         Cells(k + 1, 1) = ws.Name
  10.         Cells(k + 1, 2) = ws.Range("A65536").End(xlUp).Row - 1
  11. Cells(k + 1, 3) =Application.WorksheetFunction.Count(ws.Columns("f")) '早餐
  12. Cells(k + 1, 4) =Application.WorksheetFunction.Count(ws.Columns("g")) '中餐
  13. Cells(k + 1, 5) =Application.WorksheetFunction.Count(ws.Columns("h")) ’晚餐
  14. Cells(k + 1, 6) =Application.WorksheetFunction.Count(ws.Columns("i")) ’车费
  15.     End If
  16. Next
  17. End Sub

  18. 如果想统计哪一列需要这个的人数为多少人
  19. 把这句:Cells(k + 1, 2) = ws.Range("A65536").End(xlUp).Row - 1
  20. 改成:
  21. Cells(k + 1, 3) =Application.WorksheetFunction.Count(ws.Columns("f")) '早餐
  22. Cells(k + 1, 4) =Application.WorksheetFunction.Count(ws.Columns("g")) '中餐
  23. Cells(k + 1, 5) =Application.WorksheetFunction.Count(ws.Columns("h")) ’晚餐
  24. Cells(k + 1, 6) =Application.WorksheetFunction.Count(ws.Columns("i")) ’车费
复制代码
19.忽略空值,根据某一列拆分表格
  1. Sub 根据列内容拆分数据表()


  2. Dim sht As Worksheet
  3. Dim k, i, j As Integer
  4. Dim irow As Integer '这个说的是一共多少行
  5. Dim l As Integer
  6. Dim sht0 As Worksheet



  7. Set sht0 = ActiveSheet
  8. Range("a1", "a" & [a65536].End(xlUp).Row).SpecialCells(xlCellTypeBlanks).EntireRow.Delete '当第一行为空值时删除整行

  9. l = InputBox("要按第几列拆分")


  10. '删除无意义的表
  11. Application.DisplayAlerts = False
  12. If Sheets.Count > 1 Then
  13.     For Each sht1 In Sheets
  14.         If sht1.Name <> sht0.Name Then
  15.             sht1.Delete
  16.         End If
  17.     Next
  18. End If
  19. Application.DisplayAlerts = True


  20. irow = sht0.Range("a65536").End(xlUp).Row


  21. '拆分表
  22. For i = 2 To irow
  23.     k = 0
  24.     For Each sht In Sheets
  25.         If sht.Name = sht0.Cells(i, l) Then
  26.             k = 1
  27.         End If
  28.     Next
  29.    
  30.    
  31.     If k = 0 Then
  32.         Sheets.Add after:=Sheets(Sheets.Count)
  33.         Sheets(Sheets.Count).Name = sht0.Cells(i, l)
  34.     End If

  35. Next
  36. '拷贝数据

  37. For j = 2 To Sheets.Count
  38.     sht0.Range("a1:z" & irow).AutoFilter Field:=l, Criteria1:=Sheets(j).Name
  39.     sht0.Range("a1:z" & irow).Copy Sheets(j).Range("a1")
  40. Next

  41. sht0.Range("a1:z" & irow).AutoFilter

  42. sht0.Select

  43. MsgBox "已处理完毕!"

  44. End Sub
复制代码
20.多表合并为一表
  1. '''多表合并一表
  2. Sub 合并()
  3. Dim wsh As Worksheet, brr(), i As Integer, k As Integer, arr
  4. Sheets("汇总表").Range("a2:t9999").Clear
  5. For Each wsh In Worksheets
  6.     If wsh.Name <> "汇总表" Then
  7.     arr = wsh.Range("a2:t" & wsh.Range("a65536").End(xlUp).Row)
  8.     k = k + UBound(arr)
  9.     ReDim Preserve brr(1 To 20, 1 To k)
  10.     For i = 1 To UBound(arr)
  11.     n = n + 1
  12.     brr(1, n) = arr(i, 1)
  13.     brr(2, n) = arr(i, 2)
  14.     brr(3, n) = arr(i, 3)
  15.     brr(4, n) = arr(i, 4)
  16.     brr(5, n) = arr(i, 5)
  17.     brr(6, n) = arr(i, 6)
  18.     brr(7, n) = arr(i, 7)
  19.     brr(8, n) = arr(i, 8)
  20.     brr(9, n) = arr(i, 9)
  21.     brr(10, n) = arr(i, 10)
  22.     brr(11, n) = arr(i, 11)
  23.     brr(12, n) = arr(i, 12)
  24.     brr(13, n) = arr(i, 13)
  25.     brr(14, n) = arr(i, 14)
  26.     brr(15, n) = arr(i, 15)
  27.     brr(16, n) = arr(i, 16)
  28.     brr(17, n) = arr(i, 17)
  29.     brr(18, n) = arr(i, 18)
  30.     brr(19, n) = arr(i, 19)
  31.       brr(20, n) = arr(i, 20)
  32.    
  33.     Next
  34.     End If
  35. Next
  36. Sheets("汇总表").Range("a2").Resize(UBound(brr, 2), 20) = Application.Transpose(brr)
  37. End Sub
复制代码
21.表格排序
  1. Sub 表格排序()

  2. Dim i%, j%
  3. '比如 dim s as string '显式声明 s = "abcd" s$ = "abcd" '隐式声明,integer % 短整型
  4. For i = 1 To Sheets.Count-1

  5. For j =1 To Sheets.Count-1

  6. If Sheets(j).Name>=Sheets(j+1).Name Then

  7. Sheets(j).Move after:=Sheets(j+1)
  8. End If
  9. Next j

  10. Next i

  11. Sheets(1).Select

  12. End Sub
复制代码
22.删除背景为红色的所有行
  1. Sub 删除红色背景的行()

  2. For i = 2 To Sheets.Count
  3. With Sheets(i)
  4. R = .Cells(Rows.Count, 2).End(xlUp).Row
  5.         For j = 1 To R
  6.             If .Cells(j, 2).Interior.Color = 255 Then .Cells(j, 2).EntireRow.Delete

  7. Next
  8. End With
  9. Next
  10. End Sub

复制代码
23.自动拆分工作表到同一目录中
  1. Sub 自动拆分工作表到同一目录中()
  2. '
  3. ' 自动拆分工作表 宏
  4. '
  5. ' 快捷键: Ctrl+m
  6. '
  7. '把各个工作表以单独的工作簿文件保存在本工作簿所在的文件夹下的“拆分工作簿”文件夹下
  8. '获取活动工作簿所在路径 并判断该路径下是否存在文件夹"拆分工作簿",如果不存在则创建
  9. '遍历活动工作簿中的每个工作表,复制并另存为新的工作簿,工作簿文件名以工作表名称命名
  10. '如果遇到隐藏工作表,则先打开隐藏,复制并另存为后关闭隐藏
  11. '
  12.    
  13.     Application.ScreenUpdating = False '关闭屏幕更新
  14.     Dim xpath, isNext As String
  15.     Dim sht As Worksheet
  16.    
  17.     xpath = Application.ActiveWorkbook.Path & "\拆分工作簿"
  18.    
  19.     If Len(Dir(xpath, vbDirectory)) = 0 Then MkDir xpath '如果文件夹不存在,则新建文件夹

  20.     For Each sht In Worksheets
  21.         If sht.Visible = False Then
  22.             'MsgBox "有隐藏工作表" & sht.Name
  23.             '隐藏工作表是否拆分
  24.             
  25.             isNext = InputBox("1:跳过不处理" & Chr(10) & "2:处理并保持隐藏" & Chr(10) & "3:处理并取消隐藏" & Chr(10) & "空:不输入或其他值则默认不执行", "【" & sht.Name & "】为隐藏工作表,请选择执行方式")
  26.             
  27.             If isNext = 2 Or isNext = 3 Then
  28.                 sht.Visible = True '取消工作表的隐藏
  29.                 sht.Copy
  30.                 ActiveWorkbook.SaveAs Filename:=xpath & "" & sht.Name & ".xlsx"
  31.                 ActiveWorkbook.Close
  32.                 If isNext = 2 Then
  33.                     sht.Visible = False '恢复工作表的隐藏
  34.                 End If
  35.              End If
  36.             
  37.         ElseIf sht.Visible = True Then
  38.             sht.Copy
  39.             ActiveWorkbook.SaveAs Filename:=xpath & "" & sht.Name & ".xlsx"
  40.             ActiveWorkbook.Close
  41.         End If
  42.     Next
  43.    
  44.     'MsgBox "工作簿拆分结束"
  45.     Application.ScreenUpdating = True  '恢复屏幕更新
  46.    
  47.    
  48. End Sub
复制代码
24.如果两个表格数据不一致,会在表中标明不一致

示例.zip

16.97 KB, 下载次数: 197

为24题的答案

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-17 13:54 | 显示全部楼层
24.根据数据计算加班时间https://club.excelhome.net/thread-1593790-1-1.html
25根据关键字,提取数据,并且汇总相加https://club.excelhome.net/thread-1594816-1-1.html.
26.根据日期先后顺序,找出最相近的值,罗列出来(根据数据,选出相近的数据相加等于唯一值或者近似值)https://club.excelhome.net/thread-1595610-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-24 15:08 | 显示全部楼层
27.复制整个表格的时候,保留原宽度跟隐藏的行列,只去掉某一个表格的公式
  1. Sub fmlatoval()

  2. Dim a As Worksheet

  3. For Each a In Sheets

  4. If a.Name <> "工资条" Then 'a代表了工作表

  5. a.UsedRange.Copy                           'UsedRange表示所有被编辑过的单元格

  6. a.UsedRange.PasteSpecial xlPasteValues

  7. Application.CutCopyMode = False
  8. End If
  9. Next
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2021-9-24 15:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢分享,mark

TA的精华主题

TA的得分主题

发表于 2021-9-25 07:10 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-25 10:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

我原意是打算,将所有求助过的帖子整合起来,方便查询,不过能帮到大家我还是很开心的

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-9-25 10:55 | 显示全部楼层

我原意是打算,将所有求助过的帖子整合起来,方便查询,不过能帮到大家我还是很开心的

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-10-13 14:37 | 显示全部楼层
28.根据表格,将对应标题的数据根据标题汇总到同一表中,提取数据的标题有横竖排列https://club.excelhome.net/thread-1602085-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-2-25 13:44 | 显示全部楼层
29.根据货品编码,读取数据到另一货品编码中,其中被取数据的货品编码有分号,类似1002-001/1002-002,可以将数据汇总到取数货品编码1002中https://club.excelhome.net/thread-1605023-1-1.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-2-25 13:45 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 06:55 , Processed in 0.048358 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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