Excel VBA質問箱 IV

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

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


5318 / 13645 ツリー ←次へ | 前へ→

【51486】一列ずつ重複データを削除して上詰めにしたい ぼんしゃん 07/9/21(金) 8:19 質問[未読]
【51487】Re:一列ずつ重複データを削除して上詰めに... じゅんじゅん 07/9/21(金) 9:52 発言[未読]
【51531】Re:一列ずつ重複データを削除して上詰めに... ぼんしゃん 07/9/21(金) 22:23 お礼[未読]

【51486】一列ずつ重複データを削除して上詰めにし...
質問  ぼんしゃん  - 07/9/21(金) 8:19 -

引用なし
パスワード
   質問致します。
以下のような表があります。

   A      B      C
-------------------------
10  12345 11111 33333
11  65432 11111 33333
12  65432 11111 33333
13 13678 22222 33333
14 12555 22222 33333

それぞれの列で重複データがある場合、重複しているセルだけを削除し、
上詰めにして、同一列で重複がないようにしたいです。

   A      B      C
-------------------------
10  12345 11111 33333
11  65432 22222
12 13678
13 12555
14

それぞれのデータは五桁の数値で、それぞれの列に1000行ほどデータがあります。
1〜9行目までは関数などで使用しているので、重複検索の範囲には入れたくありません。

#44638を真似てやってみたのですが、うまくいきませんでした、
どのようにすれば良いか教えて頂けますか?

よろしくお願い致します。

【51487】Re:一列ずつ重複データを削除して上詰め...
発言  じゅんじゅん  - 07/9/21(金) 9:52 -

引用なし
パスワード
   Dictionaryオブジェクトを使用して重複をなくしてます。

Sub test()
 Dim DIC As Object
 Dim r As Range, rr As Range
 Dim v, vv

Set DIC = CreateObject("Scripting.Dictionary")
 
For Each r In Range([A10], Cells(10, Columns.Count).End(xlToLeft))
   Set rr = Range(Cells(10, r.Column), Cells(Rows.Count, r.Column).End(xlUp))
   v = rr.Value
   For Each vv In v
     If Not DIC.exists(vv) Then
      DIC(vv) = Empty
     End If
   Next
   rr.ClearContents
   Cells(10, r.Column).Resize(DIC.Count).Value = Application.Transpose(DIC.keys)
   DIC.RemoveAll
Next
End Sub
ご参考になれば幸いです。

【51531】Re:一列ずつ重複データを削除して上詰め...
お礼  ぼんしゃん  - 07/9/21(金) 22:23 -

引用なし
パスワード
   >>じゅんじゅんさん
うまくできました。ありがとうございました。

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