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

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

フィルタ オプションを使用して、条件と一致したデータを
別のシートにコピーする

フィルタ オプションを使用して、条件と一致したデータを別のシートにコピーする


  データを処理するアプリケーションを作成する場合に、目的のデータだけを抽出して、
  別のシートにコピーすることは良くあると思います。

  フィルターオプションを使うと簡単にできます。



  検索条件と一致したデータを別のシートにコピーするには、

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


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

  example1 の 例題 (csv) をダウンロードしてください。


  ダウンロードした表から

  品目コードがスーパー洗濯機で、

  生産着手予定日が 2004/10/1 以降のデータを、

  実際に Excel を操作して、別のシートにコピーして見ましょう。


フィルタ オプションを使用して、条件と一致したデータを別のシートにコピーする

  シートを追加します。シートの名前を「Item」とします。


  セルA1 から B2 まで、図のように入力してください。

  セルA2 は 「=">2004/10/1"」 と入力します。



  メニューの[データ]−[フィルタ]−[フィルタ オプションの設定]を実行します。
    
    
  @抽出先は、指定した範囲内を選択します。

  Aリスト範囲は、in課題1!$A$1:$N$428 と入力します。
をクリックして、in課題1のシートを選択後、
         データ領域を選択してください。
         もう一度押すともとに戻ります。

  B検索条件範囲は、Item!$A$1:$B$2 と入力します。
    ItemシートのA1〜B2 をドラッグすれば自動的に入力されます。

  C抽出範囲はItem!$A$10 を入力します。
    Itemシートの A10 をクリックすれば自動的に入力されます。
    
  [OK]をクリックしてください。


フィルタ オプションを使用して、条件と一致したデータを別のシートにコピーした結果

  10行目以降に条件に一致したデータをコピーできました。


  最終的には条件を記述してある 1〜9行目は不要なので、
    
  Rows("1:9").Delete
    
  で削除しておきます。
    
  上記操作をマクロで記録させると下記コードになります。


Sub test1()

    'Excelのメニューでの   
    '[データ]−[フィルタ]−[フィルタ オプションの設定] です
    '検索条件と一致したデータを別のシートにコピーします
       
    '検索条件をA1,2 と B1,2 に入力します
    '品目コードが Item で
    Range("A1") = "品目コード"
    Range("A2") = "スーパー洗濯機"
    
    '生産着手予定日が 2004/4/1 以降を抽出します
    Range("B1") = "生産着手予定日"
    Range("B2") = ">" & "2004/10/1"
    
    'まさにフィルタオプションの記述です
    'in課題1.CSV で 上記検索条件に合致するデータを Item シートの A10
    'より下にコピーします

    Workbooks("in課題1.CSV").Sheets("in課題1").Range("A1:N428"). _
    AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Range("A1:B2"), _
    CopyToRange:=Range("A10"), Unique:=False
        
    '検索条件が記述してある行を削除して抽出したデータをシートの
    '先頭にします
    Rows("1:9").Delete

End Sub

  このマクロを実行するときは、"Item" シートを選択した状態
  (最前面にシートを持ってくる)にして実行してください。


  Excel のマクロを作成する場合、現在どの Book が Active になっていて、
  どの Sheet が 選択されているかをいつも認識していることは重要です。

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




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