【发布时间】:2013-06-06 16:58:53
【问题描述】:
不过,我正在尝试将一张工作表的一列的值与另一张工作表的另一列的值进行比较,同一个工作簿。它逐步遍历另一列中的每个单元格,如果单元格值(字符串)在 sheet2 中不存在,则将 sheet1 中的行复制到 sheet3。你可以把它想象成我在比较两个数组。我想看看 Array1 中是否有没有出现在 Array2 中的值,如果没有出现在 Array1 中,则将该值复制到 Array3 中。
我的主要问题是我在第 5 行遇到类型不匹配错误。这些值包含字符串。我是 Excel VBA 的新手,我正在努力学习它。任何帮助将不胜感激。
Sub search()
Dim count As Integer
count = 0
For Each i In Worksheets("Sheet1").Range("C2:C4503")
Set first_cell = Worksheets("Sheet1").Cells(i, 3) <-- Mismatch eror
For Each j In Worksheets("Sheet2").Range("X2:X4052")
Set second_cell = Worksheets("Sheet2").Cells(j, 24)
If second_cell = first_cell Then Exit For
Next j
count = count + 1
Set Worksheets("Sheet3").Cells(count, 1) = Worksheets("Sheet1").Cells(j, 1).Select
Next i
结束子
【问题讨论】:
-
如果您想要该值,请使用
.Value或.Value2属性。Cells()返回一个范围。 -
值是否以任何方式排序,或者 sheet1 中的值可以在 sheet2 上的任何位置?
-
您以一种模棱两可的方式使用 i:首先,作为 For each i 中的范围项,然后作为 Cells(i, 3) 中的整数。
-
这些值没有排序。每个工作表都有一个包含值的列,我想看看 sheet1 中的值是否出现在 sheet2 上。该值只会出现在特定列中。