Vba 比较Excel中的两个表并隐藏行

Vba 比较Excel中的两个表并隐藏行,vba,excel,Vba,Excel,我的代码的目标是在两个不同的工作表中比较表中的两列。如果每列中每个单元格的值相同,则隐藏一列中的行。我一直得到这一行的类型不匹配错误:如果myCob2=myCodes,那么 此外,是否可以将一张工作表中的表中的列与另一张工作表中的表中的常规列进行比较?谢谢大家! Option Explicit Public Sub AstInv() Dim myLibros As ListObject Dim myInventory As ListObject Dim myCob2 As Range Dim m

我的代码的目标是在两个不同的工作表中比较表中的两列。如果每列中每个单元格的值相同,则隐藏一列中的行。我一直得到这一行的类型不匹配错误:如果myCob2=myCodes,那么

此外,是否可以将一张工作表中的表中的列与另一张工作表中的表中的常规列进行比较?谢谢大家!

Option Explicit
Public Sub AstInv()
Dim myLibros As ListObject
Dim myInventory As ListObject
Dim myCob2 As Range
Dim myCodes As Range
Dim cell As Range

Set myLibros = ThisWorkbook.Worksheets("Libros").ListObjects("Table_1")
Set myInventory = ThisWorkbook.Worksheets("Inventory").ListObjects("Table2")
Set myCob2 = myLibros.ListColumns("COB2").Range
Set myCodes = myInventory.ListColumns("Codes").Range

If myCob2 = myCodes Then

    For Each cell In myCob2

    cell.EntireRow.Hidden = True
    Next
End If

End Sub

看起来你的循环错误了。您是否应该先循环,然后执行if语句

另外,我想您应该检查每个单元格的值是否在其他单元格中,这意味着您可能需要一个双循环


我建议您打印出mycop2和myCodes,并检查您在if中实际比较的内容。

您试图比较两个范围而不是值。要将一个列表中的每个单元格与另一个列表中的值进行比较,可以使用嵌套循环

试试这个:

For Each cobCell In myCob2
    For Each codeCell In myCodes
        If cobCell = codeCell Then
            cobCell.EntireRow.Hidden = True
        End If
    Next codeCell
Next cobCell
测试数据:

输出