アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

フィルタ オプションを使用して、重複しない Item を取得する

フィルタ オプションを使用して、重複しない Item を取得する


  重複しない項目は、フィルターオプションを使用することで簡単に得られます。

  ホストからデーターをダウンロードして、色々な処理を行うアプリケーションを
  作成する場合などで、重複しない項目はいくつあるのか? 

  マクロを組むに当たってひとつの重要な要素になります。



  重複しない項目を取得するには、 

  [データ]−[フィルタ]−[フィルタ オプションの設定]を使います。

  ここでは、Download の example1 を例にして説明します。

  example1 の 項目が重複している例題 (csv)をダウンロードしてください。



  「スーパー洗濯機」や「未来が見えるメガネ」など、
  複数行にわたり重複しています。

  いったい何品目あるのでしょうか?

重複する項目がある表の表示

  実際にExcelを操作して、重複しない品目コードを取得してみましょう。


  ダウンロードした 項目が重複している例題 (csv)を開いて、
  シートを追加してください。

  追加したシートの名前を temp にしてください。



    
  temp シートを選択しておきます。

  最初に結果を出力させたいシートを選択して置くのがポイントです。
    
  メニューの [データ]−[フィルタ]−[フィルタ オプションの設定]を実行し
  ます。
    
    
  @抽出先は、指定した範囲内を選択します。

  Aリスト範囲は、in課題1!$B:$B を入力します。
をクリックして、in課題1のシートを選択後、
         B列をクリックすればOKです。
         もう一度押すともとに戻ります。

  B検索条件範囲は何も入力しません。

  C抽出範囲はtemp!$A$1 を入力します。
    tempシートのA1をクリックすれば自動的に入力されます。

  D「重複するレコードは無視する」チェックボックスをオンにします。
    
  [OK]をクリックしてください。

フィルタオプションの設定

  このようになるはずです。重複しない品目は4品目でした。
  これって、普通のExcelの操作でも知っていると便利です。

フィルタオプションをしようして重複した項目を削除した結果

  上記の操作をもう一度実行して、Excelにマクロを自動記録させてください。


  記録されたマクロのシート名などを変数に置き換えたのが下記コードです。

Sub Get_ItemCount()

    '開いた in課題1.CSVをアクティブにします
    Windows(CSV_Workbook_Name).Activate

    '作業用のSheetを挿入します
    Sheets.Add after:=ActiveWorkbook.Sheets(CSV_Sheet_Name)
    '挿入した作業用 Sheet の名前を "temp" にします
    Sheets(ActiveSheet.Name).Name = "temp"
    
    '重複しない品目コードを取り出します
    Sheets(CSV_Sheet_Name).Columns("B:B").AdvancedFilter _
        Action:=xlFilterCopy, CopyToRange:=Range("A1"), Unique:=True
       
End Sub

  example1 をダウンロードして、サンプルマクロを参照してください。
  コメントを詳しく入れてあります。




Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.