今天小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 ==我是分隔线,隐身如我君不见== 通过这段代码我们可以看到,这些都是些基础的知识,具体就不一一解释了,我们来看一看效果,只截取了结果的一部分,如下图所示: 那么今天的学习就到这里了,想要学习更多,可以关注公众号,我们一起进步,一起学习!! |
|