Excel:列Aのデータに基づいて、列Bに重複する行を削除します


1

列Bで重複を見つける必要があります。列Aの値が4の場合、行全体を削除します。保持する必要がある行があり、列Aに「4」があります。

A  B
1, John
4, John
1, Mary
4, Mary
1, Aaron
1, Scott
4, Jeff
4, Bob

私が終わったら、このように見えるはずです:

A  B
1, John
1, Mary
1, Aaron
1, Scott
4, Jeff
4, Bob

Bで重複しているが、Aの値が4ではない場合はどうしますか?あなたの例にはこれらのいずれも含まれていないので、現状では、列Aでソートし、重複除去ツールを使用してBに重複している行を削除すると、表示された結果が得られます。
AdamV

回答:


1

これを試して。データに合わせてシート名と左上のセルのアドレスを変更する必要があることに注意してください。

Sub RemoveRows()
    Dim rng1 As Range, sht1 As Worksheet
    Dim iRow As Long

    'Change sheet name and top-left cell address to match your data.
    Set sht1 = Sheets("Sheet1")
    Set rng1 = sht1.Range("A1")

    For iRow = rng1.End(xlDown).Row To rng1.Row Step -1
        If Cells(iRow, 1) = 4 Then
            If Application.WorksheetFunction.CountIf(rng1.Resize(rng1.End(xlDown).Row, 1).Offset(0, 1), Cells(iRow, 2)) > 1 Then
                Cells(iRow, 1).EntireRow.Delete
            End If
        End If
    Next iRow
End Sub

1

ヘルパー列とピボットテーブルを使用して、目的の結果を得ることができました。列Aの値は1または4のみであると仮定しました(おそらくそれは悪い仮定ですか?)。

C1では、列名「nameID」を入力します。

C2に値1を入力します。

C3では、この式を入れて、ずっと下にコピーしました。

 =IF(B3=B2,C2,C2+1) 

次に、「a」オプションの「min」を選択して、列A:Cのデータをピボットしました。

最後に、ピボットテーブルの横に、最初のピボットセルがF3であると仮定して、この連結式を書きました。

 =H3 & ", " & G3

たぶん、このスクリーンショットは明確にするのに役立ちます。最終結果は列Jにあります。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.