[[20240730124905]] 『繰返し同じ処理をしたい』(福寿) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『繰返し同じ処理をしたい』(福寿)

B列で重複した値がある行を削除する下記コードですと、4回ほど実行しないとB列の重複が無くならないのですが繰り返し処理をするためにはどのように変更したらよいか教えてください。
Sub Test()

  'データの最終行を取得
  Dim maxRow As Long
  maxRow = Cells(Rows.Count, 1).End(xlUp).Row

  'データ行数分 重複削除
  Dim i As Long
  For i = 3 To maxRow
    '上の行と比較して、重複している場合のみ削除
    If Cells(i - 1, 2) = Cells(i, 2) Then
      Rows(i).Delete
    End If
  Next i
End Sub

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


ご参考
[[20240719173945]]『マクロの行の削除について』(たかい)

(参考りんく) 2024/07/30(火) 13:30:39


そういう時は、ループの中にもう一個ループの処理が必要かなぁ。。。

Sub test()

    'データの最終行を取得
    Dim maxRow As Long
    maxRow = Cells(Rows.Count, 1).End(xlUp).Row
    'データ行数分 重複削除
    Dim i As Long
    For i = 3 To maxRow
        '重複確認を繰り返す
        Do
            'もし、上と同じ値なら
            If Cells(i - 1, 2).Value = Cells(i, 2).Value Then
                'その時は行を削除
                Rows(i).Delete
            Else
                'そうでなければ、ループを抜ける
                Exit Do
            End If
        Loop
    Next i
End Sub

ただし、行の削除をするときは、下から見ていくのが定石

Sub test002()

    Dim i As Long

    For i = Cells(Rows.Count).End(xlUp).Row To 3 Step -1
        With Cells(i, 2)
            If .Value = .Offset(-1).Value Then
        '行全体を削除
                .EntireRow.Delete
            End If
        End With
    Next
End Sub

ちなみに、エクセルは重複削除の機能があるけど、使えないのかな?
(使えるならマクロを使わないか。。。^^;)

Sub Macro1()

    Range("A1").CurrentRegion.RemoveDuplicates Columns:=2, Header:=xlYes
End Sub

他にも別案あるけど、もう、おなか一杯ですよね^^;

(まっつわん) 2024/07/30(火) 14:51:25


 あくまで参考として 
 行を削除すると下の行がどんどん繰り上がってくるので、
 ・ループの終了条件が変わることへの対応
 ・比較する行がどことどこなのかを考える
 が必要になります。

 Sub sample()
   i = 3
   Do While i < Cells(Rows.Count, 2).End(xlUp).Row - 1  ' 最終行は毎回更新されるので、最新の最終行と比較 (For Nextは最終値が更新されない)
      j = i + 1
      Do While Cells(i, 2).Value = Cells(j, 2).Value    ' 削除すると行が繰り上がってくるので、比較対象は常に1行下 
         Rows(j).Delete
      Loop
      i = i + 1
   Loop
 End Sub

 定石どおり、下から削除していくのがかんたんですね  
(´・ω・`) 2024/07/30(火) 15:09:58

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.