Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


15472 / 76734 ←次へ | 前へ→

【66739】Re:重複する行を削除したい
回答  ANTON  - 10/10/3(日) 2:24 -

引用なし
パスワード
   ▼ponte さん:
>プログラムでA列の値が重複する行を削除したい(重複が有る場合は一番上の行のデータを残す)と思いますが
>どうコーディングすればいいですか.
>Excelは2003です.
>よろしくお願いいたします.

こんな感じのマクロを組んでみましたが、ご希望に添えていますか?

ちなみにこのマクロの制限事項としてxlDownを使用していますので、初期値の時点でA列の途中に空白がある場合、その空白部分までしかマクロが実行されません。

A列が何列あるのかわからないのでUntilを使用しましたが、何列かが毎回決まっているならForを使用してもいいと思います。

途中に空白がある場合は、Forを使用しないと難しいように思えます。。。

途中に空白があり、なおかつ何列かわからない場合、ちょっと複雑なマクロになるかもしれません。。。

マクロの説明としましては、A列の最終行一個下にEndという文字を入力することで、Untilの終了条件を定めています。
Untilの終了条件を空白としていないのは、重複した際に消す作業をしているので
消した事によって空白になった部分を終了部分と誤認識させないためです。


Dim HikakuA As Variant, HikakuB As Variant
Dim i As Integer, j As Integer

i = 1 '開始行数の指定

Cells(1, "A").End(xlDown).Offset(1, 0) = "End"

Do Until Cells(i, "A") = "End"
HikakuA = Cells(i, "A")
  j = i + 1

1 'GoToポイント
  HikakuB = Cells(j, "A")
  
  If HikakuA = HikakuB Then '重複があった場合の条件式
  Cells(j, "A") = ""     'セルに空白を代入
  End If
  j = j + 1
  If j = 100 Then Exit Do '∞ループ回避策
  
If Cells(j, "A") <> "End" Then 'HikakuBがEndまで到達していない場合の条件式
GoTo 1 'ポイント1まで戻る
End If
  
i = i + 1

If i = 100 Then Exit Do '∞ループ回避策
Loop

End Sub

1 hits

【66738】重複する行を削除したい ponte 10/10/3(日) 0:37 質問
【66739】Re:重複する行を削除したい ANTON 10/10/3(日) 2:24 回答
【66741】Re:重複する行を削除したい teian 10/10/3(日) 7:59 発言
【66742】Re:重複する行を削除したい kanabun 10/10/3(日) 9:32 発言
【66743】Re:重複する行を削除したい kanabun 10/10/3(日) 9:35 発言
【66744】Re:重複する行を削除したい Hirofumi 10/10/3(日) 11:24 回答
【66748】Re:重複する行を削除したい Hirofumi 10/10/3(日) 15:43 回答
【66749】Re:重複する行を削除したい ponte 10/10/3(日) 17:50 お礼

15472 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free