質問: Excelで文字列が完全一致する行が連続して出てきた際、最初のデータ以外は削除してほしい 今、Sheet1のF列に以下のようなデータが入っております。(1行目は見出しの行のため対象外) 2(行目) ・ ・ ・ 100 ナポリタン 101 ペペロンチーノ 102 ナポリタン 103 カルボナーラ 104 ジェノベーゼ 105 ジェノベーゼ ・ ・ ・ この状況におきまして。 105行目は、前の行の104行目と全く同じ文字列(ジェノベーゼ)ですので。 105行目の方のジェノベーゼは、行ごと削除したいのです。 データが6万行ほどありまして...効率的に処理できたらと考えております。お力添えいただけますと幸いです。よろしくお願い致します
回答: 下記のマクロを標準モジュールにはりつけて、処理対象のシートを選択した状態で delete_multiple_row サブルーチンを実行してください。 ``` Function is_blank_cell(c) is_blank_cell = IsEmpty(c) Or c.Value = "" End Function Sub delete_multiple_row() last_row = Cells(Rows.Count, 6).End(xlUp).Row ' F列 r = 2 For i = 2 To last_row If is_blank_cell(Cells(r + 1, 6)) Then Exit For End If If Cells(r, 6).Value = Cells(r + 1, 6).Value Then Rows(r + 1).Delete Else r = r + 1 End If DoEvents Next End Sub ``` F列で空白セルが見つかるまで処理をします。 重複が3行以上続いても、その先頭行以外を消すようにしています。