ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 统计数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-21 22:18 | 显示全部楼层 |阅读模式
本帖最后由 木木的小二樂 于 2022-12-22 11:27 编辑

根据台账表统计另外两个表之间的数据,谢谢各位老师


补充:感谢各位了老师,我的疏忽,没有说明白,A列日期是个引导,如输入20221205在A列,那么出库是20221205的当日数据,累计是20221205所在的sheet里面的整列数据(如P.42的累计就是工作表2022.12中P.42整列的数据和),其它同理。

统计文件.zip

25.96 KB, 下载次数: 22

TA的精华主题

TA的得分主题

发表于 2022-12-22 00:00 | 显示全部楼层
这个题目的要求有点没看明白,到底是提取所有日期的出库记录,还是给定一些具体的日期,然后提取这些日期对应的出库记录?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-22 06:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-12-22 06:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
现在发帖子的人都很有意思,直接发了,让人猜

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-22 11:18 | 显示全部楼层
LIUZHU 发表于 2022-12-22 00:00
这个题目的要求有点没看明白,到底是提取所有日期的出库记录,还是给定一些具体的日期,然后提取这些日期对 ...

哎,我前面不是举例了三个例子嘛,旁边的右边我还说明了一下

如20221222,就提取这个日期的出库和这个日期往上的累计,累计是一个sheet里面的

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-22 11:19 | 显示全部楼层
mmwwdd 发表于 2022-12-22 06:02
现在发帖子的人都很有意思,直接发了,让人猜

很抱歉,我写了几个例子,然后旁边的右边也写了部分说明,我以为能理解了,因为表1和表2数据并不多,联想一下,我以为可以理解

TA的精华主题

TA的得分主题

发表于 2022-12-24 20:57 | 显示全部楼层
本帖最后由 chzsh 于 2022-12-25 07:27 编辑

Sub Macro1()
    Dim MyPath$, MyName$, sh As Worksheet, arr
    MyPath = ThisWorkbook.Path & "\销售\"
    MyName = Dir(MyPath & "*.xls")
    Application.ScreenUpdating = False
j3 = ThisWorkbook.Sheets(1).Range("a65536").End(xlUp).Row
ThisWorkbook.Sheets(1).Range("b6:b" & j3).ClearContents
ThisWorkbook.Sheets(1).Range("d6:d" & j3).ClearContents
ThisWorkbook.Sheets(1).Range("h6:h" & j3).ClearContents
ThisWorkbook.Sheets(1).Range("j6:j" & j3).ClearContents
    Do While MyName <> ""
        If MyName <> ThisWorkbook.Name Then
            Set wb = GetObject(MyPath & MyName)
      
           If wb.Name = "表1.xls" Then
                       For i = 2 To wb.Sheets.Count
                                 k = wb.Sheets(i).Range("i65536").End(xlUp).Row
                                m = wb.Sheets(1).Range("i65536").End(xlUp).Row
                                wb.Sheets(i).Range("a4:i" & k).Copy wb.Sheets(1).Range("a" & m + 1)
                                m = m + k - 3
                       Next
                       arr = wb.Sheets(1).Range("a4:i" & m)
                       Set d = CreateObject("scripting.dictionary")
                    For i = 1 To UBound(arr)
                           s = arr(i, 9)
                          If Not d.exists(s) Then
                            d(s) = Array(Val(arr(i, 4)), arr(i, 6))
                          Else
                            d(s) = Array(Val(arr(i, 4)) + d(s)(0), Val(arr(i, 6)) + d(s)(1))
                          End If
                    Next
                      k = d.keys
                      t = d.items
                    With ThisWorkbook
                    For j1 = 6 To j3
                       For j2 = 0 To d.Count - 1
                            If .Sheets(1).Range("a" & j1) = k(j2) Then
                                .Sheets(1).Range("b" & j1) = t(j2)
                                .Sheets(1).Range("d" & j1) = t(j2)(1)
                            End If
                       Next j2
                    Next j1
                 End With
          End If

      If wb.Name = "表2.xls" Then
                       For i = 2 To wb.Sheets.Count
                               k = wb.Sheets(i).Range("a65536").End(xlUp).Row
                                m = wb.Sheets(1).Range("a65536").End(xlUp).Row
                                wb.Sheets(i).Range("a4:j" & k).Copy wb.Sheets(1).Range("a" & m + 1)
                                m = m + k - 3
                       Next
                       arr = wb.Sheets(1).Range("a4:j" & m)
                       Set d = CreateObject("scripting.dictionary")
                    For i = 1 To UBound(arr)
                           s = arr(i, 1)
                          If Not d.exists(s) Then
                            d(s) = Array(Val(arr(i, 4)), arr(i, 5))
                          Else
                            d(s) = Array(Val(arr(i, 4)) + d(s)(0), Val(arr(i, 5)) + d(s)(1))
                          End If
                    Next
                      k = d.keys
                      t = d.items
                    With ThisWorkbook
                    For j1 = 6 To j3
                       For j2 = 0 To d.Count - 1
                            If .Sheets(1).Range("a" & j1) = k(j2) Then
                                .Sheets(1).Range("h" & j1) = t(j2)
                                .Sheets(1).Range("j" & j1) = t(j2)(1)
                            End If
                       Next j2
                    Next j1
                 End With     
          End If
         
   
     wb.Close False
        MyName = Dir
    End If
    Loop
    Application.ScreenUpdating = True
    MsgBox "ok"
End Sub

统计文件.zip

36.36 KB, 下载次数: 9

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 02:37 , Processed in 0.044887 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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