|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
- Sub t()
- Dim arr, brr, m%, i%, j%, dic, k, s, r%
- Set dic = CreateObject("scripting.dictionary")
- m = Sheet1.[a1].End(4).Row
- arr = Sheet1.Range("a1").CurrentRegion
- For i = 2 To UBound(arr)
- For j = 4 To UBound(arr, 2) - 1
- If arr(i, j) = "" Then
- If InStr(arr(i, 13), "物化") Then
- If InStr(arr(i, 13), "生") And j <> 7 And j <> 8 And j <> 9 Then
- dic(arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)) = dic(arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)) & arr(1, j) & ","
- ElseIf InStr(arr(i, 13), "地") And j <> 7 And j <> 12 And j <> 8 Then
- dic(arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)) = dic(arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)) & arr(1, j) & ","
- End If
- ElseIf InStr(arr(i, 13), "政史") Then
- If InStr(arr(i, 13), "生") And j <> 10 And j <> 11 And j <> 9 Then
- dic(arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)) = dic(arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)) & arr(1, j) & ","
- ElseIf InStr(arr(i, 13), "地") And j <> 10 And j <> 11 And j <> 12 Then
- dic(arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)) = dic(arr(i, 1) & "|" & arr(i, 2) & "|" & arr(i, 3)) & arr(1, j) & ","
- End If
- End If
- End If
- Next j
- Next i
- ReDim brr(1 To m, 1 To 4)
- r = 1
- For Each k In dic.keys
- s = Split(k, "|")
- For i = 0 To UBound(s)
- brr(r, i + 1) = s(i)
- brr(r, 4) = Mid(dic(k), 1, Len(dic(k)) - 1)
- Next i
- r = r + 1
- Next k
- Sheet1.[s2].Resize(UBound(brr), 4) = brr
- End Sub
复制代码 |
|