ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 收款总表根据不同收款方式提取到另一个工作表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-19 17:51 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看案例,在销售总表中输入各个订单的付款情况后,自动会在后面的分表里面根据不同的付款方式自动汇总到对应的表格,谢谢各位大神,Excel小白,多多支持!

案例.zip

8.87 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-19 17:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
主要为了省去每次再复制粘贴到后面的工作表,谢谢大神们

TA的精华主题

TA的得分主题

发表于 2020-11-19 19:51 | 显示全部楼层
这不就是拆分工作表吗?
Sub 拆分工作表()
    Dim Sht As Worksheet
    Dim arr, m&, n%, Str
    Dim dic As Object
    Set dic = CreateObject("Scripting.Dictionary")
    Application.DisplayAlerts = False
    For Each Sht In ThisWorkbook.Worksheets
        If Sht.Name <> "销售总表" Then
            Sht.Delete
        End If
    Next
    Application.DisplayAlerts = True
    With Worksheets("销售总表")
        arr = .Range("A1").CurrentRegion
        For m = 2 To UBound(arr, 1)
            If Not dic.Exists(arr(m, 7)) Then
                Set dic(arr(m, 7)) = .Range("A1:I1")
            End If
            Set dic(arr(m, 7)) = Union(dic(arr(m, 7)), .Range("A" & m & ":I" & m))    '写在此处才能完整的记录所有数据
        Next
    End With
    Application.ScreenUpdating = False
    For Each Str In dic.keys
        With Worksheets.Add(After:=Worksheets(Sheets.Count))
            .Name = Str
            dic(Str).Copy .Range("A1")
        End With
    Next
    Worksheets("销售总表").Activate
    Application.ScreenUpdating = True
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-11-19 19:51 | 显示全部楼层
参考。:
案例.zip (21.46 KB, 下载次数: 21)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

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

但这样的话,表2,3,4 都不能有任何其他的编辑咯?因为一运行宏就自动算一遍了

TA的精华主题

TA的得分主题

发表于 2020-11-21 13:02 来自手机 | 显示全部楼层
195520889 发表于 2020-11-21 10:28
但这样的话,表2,3,4 都不能有任何其他的编辑咯?因为一运行宏就自动算一遍了

需要什么编辑的?啥意思?

TA的精华主题

TA的得分主题

发表于 2020-11-21 13:36 | 显示全部楼层
195520889 发表于 2020-11-21 10:28
但这样的话,表2,3,4 都不能有任何其他的编辑咯?因为一运行宏就自动算一遍了
  1. Sub 拆分工作表()
  2.     Dim Sht As Worksheet
  3.     Dim arr, m&, n%, Str
  4.     Dim dic As Object
  5.     Set dic = CreateObject("Scripting.Dictionary")
  6.     With Worksheets("销售总表")
  7.         arr = .Range("A1").CurrentRegion
  8.         For m = 2 To UBound(arr, 1)
  9.             If Not dic.Exists(arr(m, 7)) Then
  10.                 Set dic(arr(m, 7)) = .Range("A1:I1")
  11.             End If
  12.             Set dic(arr(m, 7)) = Union(dic(arr(m, 7)), .Range("A" & m & ":I" & m))    '写在此处才能完整的记录所有数据
  13.         Next
  14.     End With
  15.     Application.ScreenUpdating = False
  16.     For Each Str In dic.keys
  17.         On Error Resume Next
  18.         Set Sht = Worksheets(Str)
  19.         If Sht Is Nothing Then
  20.             With Worksheets.Add(After:=Worksheets(Sheets.Count))
  21.                 .Name = Str
  22.                 dic(Str).Copy .Range("A1")
  23.             End With
  24.         Else
  25.             dic(Str).Copy Sht.Range("A1")
  26.         End If
  27.         Set Sht = Nothing
  28.     Next
  29.     Worksheets("销售总表").Activate
  30.     Application.ScreenUpdating = True
  31. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2020-11-21 13:36 | 显示全部楼层
修改一下代码就好了。
案例.zip (21.46 KB, 下载次数: 22)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-11-21 17:59 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 16:28 , Processed in 0.036702 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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