Sub 重複削除( )

  Range("B3 : B18") .Select
  ActiveSheet .Range("$B$3 : $B$16") .RemoveDuplicates Colmns := 1
     ' 選択範囲1列目の重複データを削除する。

  Range("B3 : B18") .Select
  ActiveWorkbook .Worksheets("Sheet1") .Sort .SortFields .Clear
  ActiveWorkbook .Worksheets("Sheet1") .Sort .SortFields .Add2 Key := Range("B3 : B16") _
    , SortOn :=xlSortOnValues ,Order :=xlAscending ,CustomOrder := _
    "NK-1,NK-2,NK-3,NK-4,NK-5,NK-6,NK-7,NK-8,NK-9,NK-10,NK-11,NK-12, _
    DataOption := xlSortNomal
  With ActiveWorkbook .Worksheets("Sheet1") .Sort
    .SetRange Range("B3 : B18")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopBottm
    .SortMethod = xlPinYin
    .Apply
  End With
     ' B3からB18までをNK-1からNK-12の設定を使用してソートする。
     ' この部分はマクロ記録でもできます。

  Range("A1") .Select
End Sub
もう一度並べ替えを実行してみると、右にNK-1,Nk-2のリストがある。それを選択して[OK]を
クリックすると数値も昇順に並べ替えが完了する。
開いた[ユーザー設定リスト]の
[リストの項目]にNK-1からNK-12
くらいまで入力して、[追加]をクリック
する。すると左の[ユーザー設定リスト]
に記入される。[OK]を押す。

(注意) リスト項目に、NK-1からNK-11
    までは入力しないと、正常に
    判断されない。
[データ]-[並べ替え]をクリックすると、ソートの
ダイアログが表示されるので、右の[スクロール]を
クリックし[ユーザー設定リスト]をクリックする。
昇順に並べ替えると左の表の様になる。数値の順に並んでいないので見にくいと思う時には、右の表の様に
並べ替えをするための設定が必要になる。

並べ替えのユーザー設定
重複している製番は無くなったのだから、このままでも次の作業に差支えが無ければ良いが、
製番全体が把握できないと思う時には、昇順に並べ替えをする必要がある。

それでは、右の表を昇順に並べ替えてみよう。
データベースから、製番別の仕入データ等を集計したい時、製番に何と何があるのかわからない場合がある。
毎日新しい製番が作成されるので当然である。このような時は、データベースの製番部分をすべて取得して、
重複しているものを削除するのも一つの方法である。

左の表は、シート内に取得した製番がB3からB18に並んでいる。
右の表は、その中から重複しているデータを削除したものである。
 
基本的なマクロの習得
データの重複削除と並べ替えの設定


実際に使っているシステムの内容で解説
  EXCEL VBA 講座