0

Excel スプレッドシートでデータをループ処理できません。

列 A の FOR EACH 値は、列 B のすべての値の値を検索します。IF Trueは、 「重複」を挿入します。

これまでのところ、次の複数のバリエーションを試しました。=IF(A2=$B$2:$B$14,"duplicate",)

私は試してみましVLOOKUPたがMATCH、これを理解することはできませんでした。INDEXMATCH

vba スクリプトの方がかなり効率的だと思いますが、どうもうまくいきません。

4

1 に答える 1

8

あなたの投稿があなたが使用しようとしたことを示唆しているように、数式でそれを行うには

=IF(ISNA(MATCH(A2,B:B,0)),"","duplicate")

VBAソリューションについては、これを試してください

Sub CheckForDups()
    Dim rSource As Range
    Dim rCompare As Range
    Dim rResult As Range
    Dim vSource As Variant
    Dim vComapre As Variant
    Dim vResult As Variant
    Dim sh As Worksheet
    Dim i As Long

    Set sh = ActiveSheet
    Set rSource = Application.Intersect(sh.UsedRange, sh.Columns(1))
    Set rCompare = Application.Intersect(sh.UsedRange, sh.Columns(2))
    Set rResult = Application.Intersect(sh.UsedRange, sh.Columns(3))
    vSource = rSource
    vComapre = rCompare
    rResult.Clear
    vResult = rResult
    For i = 2 To UBound(vSource, 1)
        If Not IsError(Application.Match(vSource(i, 1), rCompare, 0)) Then
            vResult(i, 1) = "duplicate"
        End If
    Next
    rResult = vResult
End Sub
于 2012-09-25T06:40:42.333 に答える