Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1009|回复: 9

[已解决]求用VBA把数据汇总到另一个表格

[复制链接]
发表于 2022-7-3 16:57 | 显示全部楼层 |阅读模式
有3个表格,要把数据汇总到“各公司报价汇总”表里面,具体见附件,谢谢。
    报价汇总.rar (244.8 KB, 下载次数: 58)
发表于 2022-7-4 12:53 | 显示全部楼层
本帖最后由 eennoo 于 2022-7-4 13:05 编辑

1
回复

使用道具 举报

发表于 2022-7-6 14:05 | 显示全部楼层
本帖最后由 我行我速2008 于 2022-7-6 14:20 编辑

试试吧!!!

报价汇总(20220706).rar

285.2 KB, 下载次数: 24

回复

使用道具 举报

 楼主| 发表于 2022-7-6 15:14 | 显示全部楼层

你好,谢谢你的帮助,点击清除按钮后,再点击“报价汇总”按钮不能导入数据,不知道是不是版本问题,我用的是2016版。
回复

使用道具 举报

发表于 2022-7-6 16:32 | 显示全部楼层

我电脑中没问题
2022-07-06_163034.jpg
回复

使用道具 举报

发表于 2022-7-6 16:36 | 显示全部楼层
wzd28 发表于 2022-7-6 15:14
你好,谢谢你的帮助,点击清除按钮后,再点击“报价汇总”按钮不能导入数据,不知道是不是版本问题,我用 ...

我对你发的表格做了修改,所以要用我发的表格才行。
回复

使用道具 举报

 楼主| 发表于 2022-7-8 14:02 | 显示全部楼层
我行我速2008 发表于 2022-7-6 16:36
我对你发的表格做了修改,所以要用我发的表格才行。

老师,可以导入数据了,我在“各公司报价汇总”表又增加了一列备注栏,点击“报价汇总”按钮导入数据出错,麻烦老师帮忙修改一下,谢谢。
   报价汇总20220708.rar (361.25 KB, 下载次数: 3)
回复

使用道具 举报

发表于 2022-7-8 16:14 | 显示全部楼层    本楼为最佳答案   
试试吧!!!!!

003.rar

286.23 KB, 下载次数: 28

回复

使用道具 举报

 楼主| 发表于 2022-7-10 11:51 | 显示全部楼层

老师,我想自己修改汇总后单元格填充的颜色(原来是红色,修改为绿色或蓝色,黄色),在vba哪里修改,谢谢。
回复

使用道具 举报

发表于 2022-7-10 12:02 | 显示全部楼层
Sub 导入()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim D, Ar, Br, Cr, f(), Dr
    Dim R%, C%, X%, Y%, X1%, K%, I%, Co%, T
    Dim MyName$
    Dim Wb As Workbook
    T = Timer
    清除
    Set D = CreateObject("scripting.dictionary")
    MyName = Dir(ThisWorkbook.Path & "\", vbDirectory)
    Do While MyName <> ""
        If InStr(MyName, ".xlsx") > 0 Then
            K = K + 1
            ReDim Preserve f(1 To K)
            f(K) = ThisWorkbook.Path & "\" & MyName
        End If
        MyName = Dir
    Loop

    With ActiveSheet
        .Cells.Interior.ColorIndex = xlNone
        C = .Cells(2, Columns.Count).End(xlToLeft).Column
        Ar = .Range("A1").CurrentRegion
        For X = 3 To UBound(Ar)
            D(Ar(X, 1) & Ar(X, 2) & Ar(X, 3) & Ar(X, 4)) = X
        Next X
        For Y = 5 To C Step 5
            For I = 1 To UBound(f)
                ReDim Cr(1 To 1000, 1 To 5)
                K = 0
                If InStr(f(I), Ar(1, Y)) > 0 Then
                    Set Wb = Workbooks.Open(f(I))
                    Br = Wb.Sheets(1).Range("A1").CurrentRegion
                    For X1 = 2 To UBound(Br)
                        If D.Exists(Br(X1, 2) & Br(X1, 3) & Br(X1, 4) & Br(X1, 5)) Then
                            Co = D(Br(X1, 2) & Br(X1, 3) & Br(X1, 4) & Br(X1, 5))
                            Ar(Co, Y) = Br(X1, 2)
                            Ar(Co, Y + 1) = Br(X1, 3)
                            Ar(Co, Y + 2) = Br(X1, 4)
                            Ar(Co, Y + 3) = Br(X1, 5)
                            Ar(Co, Y + 4) = Br(X1, 6)
                        Else
                            K = K + 1
                            Cr(K, 1) = Br(X1, 2)
                            Cr(K, 2) = Br(X1, 3)
                            Cr(K, 3) = Br(X1, 4)
                            Cr(K, 4) = Br(X1, 5)
                            Cr(K, 5) = Br(X1, 6)
                        End If
                    Next X1
                End If
                Wb.Close
                With .Cells(1, 1).Resize(UBound(Ar), UBound(Ar, 2))
                    .Value = Ar
                    With .Borders
                        .LineStyle = xlContinuous
                        .Weight = xlThin
                        .ColorIndex = 1
                    End With
                End With
                If K > 0 Then
                    .Cells(UBound(Ar) + 1, Y).Resize(K, 5) = Cr
                   .Cells(UBound(Ar) + 1, Y).Resize(K, 5).Interior.ColorIndex = 35
                End If
            Next I
        Next Y

    End With
    MsgBox Format(Timer - T, "0.00")
    Set Wb = Nothing
    Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 01:27 , Processed in 0.270850 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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