VBA学习练习-遍历工作簿,将数据合并汇总

工作中会遇到数据汇总,尤其是运营工作,一区二区分别填了之后需要手动复制黏贴好了之后上交,所以写了这个代码,但是还是有很多地方需要改进的,毕竟有些需要手动填的地方,如果有大佬可以指点一下,谢谢

Sub 遍历所有sheet,并匹配填到指定sheet里()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim a, b, c, d As Integer, n As Range, n_in, asc As Integer, arr, st As Worksheet, sht, zb As Worksheet, stc, lc, lb
Set sht = Worksheets("公告数据明细")				'手写一下目标sheet
Set zb = Worksheets("总表")							'手写一下不想遍历到的sheet
stc = inputbox("请输入数据状态有几列")				'需要匹配的数据可能头有好多列,例如区域、城市、经销商名称等,需要手写一下这种东西有多少列
asc = inputbox("请输入需要匹配的列")                                                 '需要匹配的列 
For Each st In Worksheets
    If st.Name <> sht.Name Then
    If st.Name <> zb.Name Then
    arr = Worksheets(st.Name).Range("A1").CurrentRegion
    lc = UBound(arr, 1)
    lb = UBound(arr, 2)
    For Each n In Worksheets(st.Name).Range(Worksheets(st.Name).Cells(2, stc + 1), Worksheets(st.Name).Cells(lc, lb))
        If n <> "" Then
            If n <> 0 Then
                a = n.Row
                For Each n_in In Worksheets(sht.Name).Range(Worksheets(sht.Name).Cells(1, asc), Worksheets(sht.Name).Cells(lc, asc))
                    If n_in.Value = Worksheets(st.Name).Cells(a, asc).Value Then
                        c = n_in.Row
                    End If
                Next  
                b = n.Column
                For Each n_in In Worksheets(sht.Name).Range(Worksheets(sht.Name).Cells(1, 1), Worksheets(sht.Name).Cells(1, lb))
                    If n_in.Value = Worksheets(st.Name).Cells(1, b).Value Then
                        d = n_in.Column
                    End If
                Next
                If n.Value > Worksheets(sht.Name).Cells(c, d).Value Then
                    Worksheets(sht.Name).Cells(c, d).Value = n.Value
                End If
            End If
        End If
    Next n
    End If
    End If
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "已完成"
End Sub

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值