0

ただし、あるシートの 1 つの列の値を、同じワークブックの別のシートの別の列の値と比較しようとしています。他の列の各セルを順に処理し、セルの値 (文字列) がシート 2 に存在しない場合は、シート 1 の行がシート 3 にコピーされます。2 つの配列を比較しているように考えることができます。Array2 に表示されない値が Array1 にあるかどうかを確認したいのですが、それらが 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 に答える