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

时间:2018-03-29 16:29:04

标签: vba excel-vba excel

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

另外,是否可以比较一张表格中的列和另一张表格中的常规列(不在表格中)?谢谢!

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

2 个答案:

答案 0 :(得分:1)

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

试试这个:

For Each cobCell In myCob2
    For Each codeCell In myCodes
        If cobCell = codeCell Then
            cobCell.EntireRow.Hidden = True
        End If
    Next codeCell
Next cobCell

测试数据:

enter image description here

输出

enter image description here

答案 1 :(得分:0)

看起来你循环错了。你不应该先循环然后再做一个if语句吗?

另外,我猜你应该检查每个单元格是否在任何其他单元格中,这意味着你可能需要一个双循环。

我建议您打印myCob2myCodes并检查if中您实际比较的内容。