Excel VBA質問箱 IV

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

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


15469 / 76734 ←次へ | 前へ→

【66742】Re:重複する行を削除したい
発言  kanabun  - 10/10/3(日) 9:32 -

引用なし
パスワード
   ▼ponte さん:
おじゃまします。

>プログラムでA列の値が重複する行を削除したい(重複が有る場合は一番上の行のデータを残す)

一般機能の 「フィルタオプションの設定(Unique:=True)」を
使うのも手かと思います。

フィルタオプションの設定でやるときは、
表の一行目は項目見出しである必要があります。

いちどほんとに重複カットできるか、以下で確認してみましょう

Sub 確認()
 Range("A1", Cells(Rows.Count, 1).End(xlUp)) _
  .AdvancedFilter xlFilterInPlace, Unique:=True
 MsgBox "OK?"
 ActiveSheet.ShowAllData
End Sub


もし、うまく行ったなら、本番です
本番は 表全体を作業用一時シートにコピーしておいてから、
一時シートで抽出したものを 元のシートに戻す という手順をとります。

Sub 実行()
 Dim Target As Range, Address1 As String
 Dim oSheet As Worksheet '対象シート
 Dim nSheet As Worksheet '作業用一時シート
 
 '----準備 作業用シートに全データコピー
 Set oSheet = ActiveSheet
 With oSheet
   Set Target = Range("A1", Cells(Rows.Count, 1).End(xlUp)) _
     .Resize(, .UsedRange.Columns.Count)
   Address1 = Target.Address
 End With
 Set nSheet = Worksheets.Add
 Target.Copy nSheet.Range("A1")
 Target.ClearContents
 
 '--- 作業用シートで重複カット実行
 With nSheet.Range(Address1)
   'A列だけを対象に フィルタオプションでUniqueデータとする
   .Columns(1).AdvancedFilter xlFilterInPlace, Unique:=True
   .Copy
 End With
 
 '---元のシートに貼り付け直す
 Target.Cells(1).PasteSpecial xlPasteValues
 
 '--- 作業用シートの削除
 Application.DisplayAlerts = False
 nSheet.Delete
 Application.DisplayAlerts = True
 
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 お礼

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