今、Sheet1のF列に以下のようなデータが入っております。(1行目は見出しの行のため対象外)
2(行目)
・
・
・
100 ナポリタン
101 ペペロンチーノ
102 ナポリタン
103 カルボナーラ
104 ジェノベーゼ
105 ジェノベーゼ
・
・
・
この状況におきまして。
105行目は、前の行の104行目と全く同じ文字列(ジェノベーゼ)ですので。
105行目の方のジェノベーゼは、行ごと削除したいのです。
データが6万行ほどありまして…効率的に処理できたらと考えております。お力添えいただけますと幸いです。よろしくお願い致します<m(__)m>
下記のマクロを標準モジュールにはりつけて、処理対象のシートを選択した状態で 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行以上続いても、その先頭行以外を消すようにしています。
https://firestorage.jp/download/5d66a4e53dc899faa01b0883e365f82c7085d10a
fonduエクセルファイルを作成しましたのでダウンロードしてください。
シート1のH列に、関数を用いて、連続して出てきた単語か表示させます。
シート2へ、シート1の内容をそのまま、値コピーして貼り付けます。
シート2のH列を基準にして、並べ替えを昇順でおこないます。
単語が連続して出てきた行を範囲指定して、1回で削除することができます。
以上で必要とするデータを得ることができます。
すごいですね。countifは自分もよく使います。でもそこからさらにif文で条件を加えて、文字列を足せば、重複するデータを出せるということですか…ありがとうございます!
知らなかったです…この機能を使えば、チェックボックスでF列のデータの項目だけをチェックしておいて。
重複を削除すれば、他の列の行も消えてくれますね!
ありがとうございます(^^;)
下記のマクロを標準モジュールにはりつけて、処理対象のシートを選択した状態で 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行以上続いても、その先頭行以外を消すようにしています。
うまくいきました!ありがとうございます(^^;)
今回は皆さんすばらしい回答で、ベストアンサー悩みましたが。
ちょうど自分がマクロの勉強をしていることもありましたので、a-kuma3さんの回答を選ばせていただきました<m(__)m>
うまくいきました!ありがとうございます(^^;)
2020/01/19 15:10:35