请看附件,用了单元格和单元格底色作辅助,附代码
BvBPVpSd.rar
(10.25 KB, 下载次数: 100)
Sub hjs()
Dim bb As Worksheet
Dim i&, M&, j%, irow&, k&
Dim r As Range, rng As Range
Set bb = Sheets("BB")
With Sheets("AA")
.Columns("E:F").Clear
.[e2] = .[a2]
For i = 3 To .[a4] + 1 '根据起始建立一个所有数的列
.Cells(i, 5) = .Cells(i - 1, 5) + 1
Next
For j = 2 To 3 '根据第二列第三列的值在新列中查找
irow = .Cells(2, j).End(xlDown).Row
For i = 2 To irow
Set r = .Columns(5).Find(.Cells(i, j), lookat:=xlWhole)
If Not r Is Nothing Then r.Interior.ColorIndex = j '如果找到了则设置颜色
Next i
Next j
irow = .[e65536].End(xlUp).Row
M = irow
.[e1].Interior.ColorIndex = 40 '为了使e2和e1的颜色不一致
For i = irow To 2 Step -1 '从E最后一行循环,如果颜色不同,在F列做出范围
If .Cells(i, 5).Interior.ColorIndex <> .Cells(i - 1, 5).Interior.ColorIndex Then
If M <> i Then
.Cells(i, 5).Offset(0, 1) = .Cells(i, 5).Value & "--" & .Cells(M, 5).Value
M = i - 1
Else
.Cells(i, 5).Offset(0, 1) = .Cells(i, 5).Value
M = i - 1
End If
End If
Next
bb.[a2:d1000].ClearContents '现在考虑BB表
bb.[a2] = .[a2] & "--" & .[a4]
k = 2
For i = 2 To .[f65536].End(xlUp).Row
Set rng = .Cells(i, "F")
If rng <> "" Then
Select Case rng.Offset(0, -1).Interior.ColorIndex '根据颜色的不同粘贴不同的值
Case xlNone
bb.Cells(k, 4) = rng
Case 2
bb.Cells(k, 2) = rng
Case 3
bb.Cells(k, 3) = rng
End Select
k = k + 1
End If
Next
End With
End Sub
|