我的代码的目标是比较两个不同工作表中的表中的两列。如果每列中每个单元格的值相同,则隐藏一列中的行。我一直收到此行的类型不匹配错误: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
答案 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
测试数据:
输出
答案 1 :(得分:0)
看起来你循环错了。你不应该先循环然后再做一个if语句吗?
另外,我猜你应该检查每个单元格是否在任何其他单元格中,这意味着你可能需要一个双循环。
我建议您打印myCob2
和myCodes
并检查if
中您实际比较的内容。