Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: anmoyy1993

[已解决](高级!)批量 一对多对应及统计

[复制链接]
发表于 2017-8-4 19:27 | 显示全部楼层
Sub 合并()
Dim arr, brr, crr
Application.ScreenUpdating = False
t = Timer
Set d = CreateObject("scripting.dictionary")
arr = Sheet1.Range("a1").CurrentRegion
brr = Sheet2.Range("a1").CurrentRegion
ReDim crr(1 To UBound(arr), 1 To 6)
For i = 2 To UBound(arr)
     d(arr(i, 4)) = d(arr(i, 4)) & "," & i '将缺陷表中条目与行号一一对应
Next i
n = 1
For i = 2 To UBound(brr)
     crr(n, 1) = brr(i, 1) '章节
     crr(n, 2) = brr(i, 2) '条款
     crr(n, 3) = brr(i, 3) '条款内容
     If d(brr(i, 2)) <> "" Then
        ar = Split(d(brr(i, 2)), ",")
        crr(n, 6) = UBound(ar)
        For j = 1 To UBound(ar)
            x = ar(j) '条款所对应的行号
            crr(n, 4) = arr(x, 5) '缺陷
            crr(n, 5) = arr(x, 2) '产品类别
            n = n + 1
        Next j
     Else
        s = 0: Erase ar: n = n + 1
     End If
Next i
Sheet4.Range("a1:e1000").ClearContents
Sheet4.Range("a1").Resize(1, 6) = Array("章节", " 条款 ", "条款内容", "缺陷及问题", "产品类别", "该条款缺陷项计数")
Sheet4.Range("a2").Resize(n, 6) = crr
MsgBox Format(Timer - t, "0.00秒")
Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 04:46 , Processed in 0.245252 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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