vba 已知主工作表A和辅工作表B,用字典判断工作表A中的J列与工作表B中的E列是否相同,相同的在工作表A中的AG列标注剔除,不同的标空
时间: 2024-02-05 18:14:02 浏览: 100
VBA实现Excel表格根据列拆分工作簿,再由工作簿根据列拆分成工作表.txt
5星 · 资源好评率100%
可以使用 VBA 中的字典对象来实现此功能。下面是一个示例代码:
```vb
Sub CompareAndMark()
Dim dictB As Object
Set dictB = CreateObject("Scripting.Dictionary")
Dim wsA As Worksheet, wsB As Worksheet
Set wsA = ThisWorkbook.Worksheets("A") '主工作表A
Set wsB = ThisWorkbook.Worksheets("B") '辅工作表B
'将辅工作表B中的所有E列数据添加到字典中
Dim lastRowB As Long, i As Long
lastRowB = wsB.Cells(wsB.Rows.Count, "E").End(xlUp).Row
For i = 1 To lastRowB
dictB.Item(wsB.Cells(i, "E").Value) = True
Next i
'遍历主工作表A中的J列
Dim lastRowA As Long, j As Long
lastRowA = wsA.Cells(wsA.Rows.Count, "J").End(xlUp).Row
For j = 1 To lastRowA
Dim valueJ As String
valueJ = wsA.Cells(j, "J").Value
'判断J列的值是否在字典中存在
If dictB.exists(valueJ) Then
'如果存在,则在AG列标注为“剔除”
wsA.Cells(j, "AG").Value = "剔除"
Else
'如果不存在,则在AG列标注为空
wsA.Cells(j, "AG").Value = ""
End If
Next j
End Sub
```
上述代码中,先将辅工作表B中的所有E列数据添加到字典中。然后遍历主工作表A中的J列,对于每个J列的值,判断是否在字典中存在,如果存在则在AG列标注为“剔除”,否则在AG列标注为空。
阅读全文