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