分享

合并格式混乱的工作表

 L罗乐 2016-11-20

今天小A在上班的时候,小B就匆忙的跑过来了,问小A说她有一个工作薄,这个工作薄中有好多个工作表,由于多人接手,格式都不一样,但内容都全,需要汇总,那怎么办呢? 小A一看是小B来问呀,心里还是有丝欢喜,毕竟小B在公司内还算个小美女嘛,爱美之心,小A也是有的嘛!

于是小A就对小B说小B呀,这个很简单的嘛,放心,包在我心上,这么点小事嘛,以后有什么问题尽管来问我!

小B这时心里想着小A其实还不错嘛?

小A........

==我是分隔线,隐身如我君不见==

好了,小A已经做梦去了,那么我们继续来说一说工作表合并的问题!有这么一个例子如下图所示:


通过上图可以看到哈,我们这里有10个需要汇总的工作表数据,那么说到这里呀,是不是有人就会想到这么点数据我们手动汇总不就得了吗?10个工作表的数据是不算多,可以手动汇总,但如果100个工作表呢?1000个呢?再加上100个工作薄呢?随心想你们也会崩溃吧?

同时,可以看到我们的工作表格式是错乱的,想要汇总嘛,可得花点时间咯!

==我是分隔线,隐身如我君不见==

那么我们来写一写代码,代码如下所示:

Sub test() '随心

Dim sht As Worksheet, crr()

On Error Resume Next

arr = [a1:h1]

For Each sht In Worksheets

    If sht.Name <> '汇总表' Then

        brr = sht.Range('a1').CurrentRegion

            For j = 1 To UBound(arr, 2)

                m = m 1

               ReDim Preserve crr(1 To UBound(arr, 2), 1 To UBound(brr) - 1)

               For i = 1 To UBound(brr, 2)

                   If arr(1, j) = brr(1, i) Then

                        For k = 1 To UBound(brr)

                            If IsNumeric(brr(k, i)) Or IsDate(brr(k, i)) Then

                            n = n 1

                            crr(m, n) = brr(k, i)

                            End If

                        Next

                        n = 0

                        Exit For

                    End If

               Next

            Next

    End If

    Cells(Rows.Count, 1).End(xlUp)(2, 1).Resize(UBound(crr, 2), UBound(crr)) = Application.Transpose(crr)

    m = 0

Next

End Sub



==我是分隔线,隐身如我君不见==

通过这段代码我们可以看到,这些都是些基础的知识,具体就不一一解释了,我们来看一看效果,只截取了结果的一部分,如下图所示:


那么今天的学习就到这里了,想要学习更多,可以关注公众号,我们一起进步,一起学习!!





    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多