0

私は 2 枚のシートを持っています。2 枚のシートで同じ行を見つけたいので、最初の行を配列に入れます。それら....なぜうまくいかないのですか?

Sub compare()
    Dim n(4) As Variant
    Dim o(4) As Variant
    Dim i As Integer

    For i = 3 To 20    'satrha
        For j = 2 To 4     'por kardan
            n(j) = Sheets("guys").Cells(i, j)
        Next                'por kardan
        k = 3
        Do                  'hhhh
            For Z = 2 To 4     'por dovomi
                o(Z) = Sheets("p").Cells(k, Z)
            Next                  'por dovomi
            If n(j) = o(Z) Then
                Sheets("guys").Cells(i, 1) = Sheets("p").Cells(k, 2)
                flag = True
            Else
                flag = False
                k = k + 1
            End If
        Loop Until flag = False  'hhhhh
    Next             'satrha
End Sub
4

1 に答える 1

0

既存のコードから推測すると、次のコードは、一致が見つかったときに、シート "p" 列 B からシート "guys" 列 A に値をコピーします。

Sub compare()
    Dim i As Integer
    Dim j As Integer
    Dim l As Integer
    l = Sheets("p").Range("B65535").End(xlUp).Row
    Debug.Print l
    For i = 3 To 20
        For j = 3 To l
            If Sheets("guys").Cells(i, 2).Value = Sheets("p").Cells(j, 2).Value And _
                Sheets("guys").Cells(i, 3).Value = Sheets("p").Cells(j, 3).Value And _
                Sheets("guys").Cells(i, 4).Value = Sheets("p").Cells(j, 4).Value Then
                Sheets("guys").Cells(i, 1).Value = Sheets("p").Cells(j, 2).Value
                Exit For
            End If
        Next
    Next
End Sub

Valueコードで明示的に言ったことに注意してください。これにより、「元の」コンテンツではなく、計算された値 (式の結果など) がコピーされます。

于 2012-08-27T11:09:20.400 に答える