0

不过,我正在尝试将一张工作表的一列的值与不同工作表的另一列的值进行比较,同一个工作簿。它逐步遍历另一列中的每个单元格,如果单元格值(字符串)在 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

结束子

4

2 回答 2

1
Sub Search()

Dim rowNum As Long
Dim i As Range, f As Range

    rowNum = 1

    For Each i In Worksheets("Sheet1").Range("C2:C4503").Cells

        If Len(i.Value) > 0 Then
            'search for value on sheet2
            Set f = Worksheets("Sheet2").Range("X2:X4052").Find( _
                             i.Value, , xlValues, xlWhole)

            If f Is Nothing Then
                'not found: copy row from sheet1>sheet3
                i.EntireRow.Copy Worksheets("Sheet3").Cells(rowNum, 1)
                rowNum = rowNum + 1
            End If
        End If

    Next i

End Sub
于 2013-06-06T17:52:40.813 回答
0

以下:

For Each i In Worksheets("Sheet1").Range("C2:C4503")
    ...
Next i

遍历指定范围内的单元格;i 是Range表示当前单元格的对象。

您在以下行的整数索引中使用它:

Set first_cell = Worksheets("Sheet1").Cells(i, 3)

因此类型不匹配。

于 2013-06-06T17:06:34.057 回答