EXCEL使用宏实现筛选重复项并对该行进行填充内容的操作
需求
1.一个excel中有多张不同的sheet
2.筛选出sheet1中A、B列与sheet2中A、B列中非重复行
3.在非重复行对应的D列填充内容
原始表:需要排出专家1wbb在自己没课的时候可以听其他人课的时间,在专家1中做上标记"zj1"(代表此时wbb无课,可以作为专家1去听课)
sheet1:记录一段时间内所有课程安排
sheet2:一段时间内专家1wbb的课程安排
方法
使用宏:
创建一个宏,名字随便自己起,将编写的好的宏复制进去,然后在运行
代码
vbnet
Sub find1()
'
' find1 Macro
'
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastRow1 As Long, lastRow2 As Long, i As Long, j As Long
Dim cellValue1A As String, cellValue1B As String
Dim cellValue2A As String, cellValue2B As String
Dim combinedValue1 As String, combinedValue2 As String
Dim isDuplicate As Boolean
' 设置工作表
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
' 获取两个工作表的最后一行
lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
' 遍历Sheet1的A和B列
For i = 1 To lastRow1
cellValue1A = ws1.Cells(i, 1).Value ' 日期
cellValue1B = ws1.Cells(i, 2).Value ' 节次
combinedValue1 = cellValue1A & cellValue1B ' 拼接日期和节次
isDuplicate = False ' 假设当前行不是重复行
' 遍历Sheet2的A和B列
For j = 1 To lastRow2
cellValue2A = ws2.Cells(j, 1).Value ' 日期
cellValue2B = ws2.Cells(j, 2).Value ' 节次
combinedValue2 = cellValue2A & cellValue2B ' 拼接日期和节次
' 如果拼接值相同,则是非重复行
If combinedValue1 = combinedValue2 Then
isDuplicate = True
Exit For
End If
Next j
' 如果不是重复行,则在D列对应行填写"zj1"
If Not isDuplicate Then
ws1.Cells(i, 4).Value = "zj1" ' D列是第4列
End If
Next i
' 提示完成
MsgBox "处理完成!非重复行已在Sheet1的D列标记为'zj1'。"
End Sub