0

こんにちは、VB を使用して Excel にデータを入力しています。シートでは、列 G には同じ番号のセルが多数あります (そして、それらはパターンに従わずに繰り返されます)。最初に、どのエントリが一意ではないかを見つけてから、列に最初に出現したものを保持し、繰り返しが発生した行全体を削除したいと思います。次に例を示します。

ここに画像の説明を入力

画像からわかるように、列 G では、番号 1000 と 2200 が繰り返されています。そのため、行 3 と 6 全体を削除する必要があります (1000 と 2200 が最初に表示される行 1 と 2 を保持します)。

動作しないコードは次のとおりです。

Sub Dupli()

    Dim i As Long, dic As Object, v As Object

    dic = CreateObject("Scripting.Dictionary")

    i = 1
    For Each v In sheet.UsedRange.Rows
        If dic.exists(v) Then sheet.Rows(v).EntireRow.Delete() Else dic.Add(v, i)
        i = i + 1
    Next v

End Sub
4

2 に答える 2

1

このようなことを試してください。辞書は必要ないと思います (コードの他の場所で必要な場合を除きます)。オブジェクトを削除するときは、通常、コレクションを逆方向に反復処理する必要があります。このメソッドはCountIf関数を使用して、特定の行の列 G のセル値が列 G のすべてで複数回発生するかどうかをテストし、その条件が true の場合は行を削除します。

Sub Dupli()

    Dim i As Long
    Dim cl as Range

    i = 1
    For i= sheet.UsedRange.Rows.Count to 1 Step -1
        Set cl = sheet.Cells(i,7) '## Examine the cell in Column G
        If Application.WorksheetFunction.CountIf(sheet.Range("G:G"),cl.Value) > 1 Then
            sheet.Rows(i).EntireRow.Delete
    Next

End Sub
于 2013-07-30T13:42:32.223 に答える
-1
  1. これをH1に入れます:

=COUNTIF(G$1:G1;G1)

  1. 最後まで埋める
  2. 列 G にオートフィルターを作成する
  3. 1 の値を除外する
  4. 行ヘッダーで残りの行を選択します
  5. 行ヘッダーを右クリック > [削除...] をクリックします。
于 2013-07-29T19:19:35.097 に答える