篩選sheet"adj" H更含NA 的行,用A列可見單元格的內容與sheet"check"的A列進行匹配,匹配到的Sheet"adj 的H與I的對應單元格等于Sheet"check"H與I的對應單元格的內容,用VBA怎麼表達
时间: 2023-07-19 22:03:10 浏览: 81
以下是一个示例VBA代码,可以实现你所描述的功能:
```
Sub MatchAndFilter()
Dim adjSheet As Worksheet
Dim checkSheet As Worksheet
Dim adjLastRow As Long
Dim checkLastRow As Long
Dim adjRange As Range
Dim checkRange As Range
Dim cell As Range
Dim matchFound As Boolean
'设置要操作的工作表
Set adjSheet = ThisWorkbook.Sheets("adj")
Set checkSheet = ThisWorkbook.Sheets("check")
'获取adj和check工作表的最后一行
adjLastRow = adjSheet.Cells(Rows.Count, "A").End(xlUp).Row
checkLastRow = checkSheet.Cells(Rows.Count, "A").End(xlUp).Row
'设置需要筛选的范围
Set adjRange = adjSheet.Range("A1:I" & adjLastRow)
Set checkRange = checkSheet.Range("A1:I" & checkLastRow)
'循环遍历adj工作表的每一行
For Each cell In adjRange.Rows
'检查H列是否包含NA
If InStr(1, cell.Cells(1, "H"), "NA") > 0 Then
matchFound = False
'在check工作表中查找匹配的行
For Each checkCell In checkRange.Rows
'检查A列是否匹配
If checkCell.Cells(1, "A").Value = cell.Cells(1, "A").Value Then
'检查H和I列的值是否相等
If checkCell.Cells(1, "H").Value = cell.Cells(1, "H").Value And checkCell.Cells(1, "I").Value = cell.Cells(1, "I").Value Then
matchFound = True
Exit For
End If
End If
Next checkCell
'如果匹配成功,则保留行;否则删除行
If Not matchFound Then
cell.EntireRow.Delete
End If
End If
Next cell
End Sub
```
该代码做了以下几件事情:
1. 获取adj工作表和check工作表的最后一行。
2. 设置需要筛选的范围。
3. 遍历adj工作表的每一行,检查H列是否包含NA。
4. 如果H列包含NA,则在check工作表中查找匹配的行。
5. 如果找到匹配的行且H和I列的值相等,则保留该行;否则删除该行。
阅读全文