[[20080522151039]] 『VBAでオートフィルターの様に抽出する方法』(ぴちょんくん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでオートフィルターの様に抽出する方法』(ぴちょんくん)

VBA初心者です。エクセルのオートフィルターと同じように抽出の仕方を教えて下さい。

”グループ抽出”ボタンをクリックすると、InputBoxが出てきてグループ名を入力すると抽出ができる様にしたいです。

お願いです。教えてくださいm(_ _)m

|グループ抽出 |

     A            B            C          D          E
  グループ名    名前      住所   電話番号  年 齢
1 さくら   あずまみきひさ    東京都     ・・・・・  
2 ば ら  はまだ まさと  大 阪   ・・・・・
3 さくら  まつもとひとし  大  阪   ・・・・・
4 ば ら    ごう  ひろみ  東京都   ・・・・・
5 ば ら  のぐち ごろう  東京都   ・・・・・
6 さくら  こだま きよし  東京都   ・・・・・
7  ・
8  ・
9  ・
10  ・


 1番上に3行挿入して、A1に「グループ名」と記述、
 A2を抽出したいグループ名記入欄とする。
 A2に抽出グループ名が記入してある状態で。

 ここからりマクロ記録。

 A4選択、Ctrl + *。

 データ → フィルタオプションの設定
 抽出先、選択範囲内。
 リスト範囲、選択されている範囲が記入されていると思います。
 設定画面が出る時に、データ上部を項目とするか・・・は、環境に合わせてください。
 検索条件範囲A1:A2。
 でOK。

 マクロ記録終了。
 BJ

 InputBoxに入力した語で
 オートフィルタの絞り込みを行うのでは
 駄目なのですかね?

 (HANA)

BJさん、HANAさんありがとうございました。

BJさん上記の通りやってみようとしたんですが、「A4選択、Ctrl+*」と書いている様にA4を選択してCtrlを押しながら*を押してみました。すると、A4の所に時間が表示されて、なんだかよく分からないんです。

やり方間違ってますよね?

HANAさん、ありがとうございました。

そのやり方をVBAで教えてもらってもいいですか?


 >BJさん上記の通りやってみようとしたんですが、「A4選択、Ctrl+*」と書いている様にA4を選択してCtrlを押しながら*を押してみました。すると、A4の所に時間が表示されて、なんだかよく分からないんです。

 あ、テンキーの方の「*」です。
 文字キー?の「け、:」なら、 Shift + Ctrl + *
 BJ

BJさんありがとうございました。

なんとか、オートフィルターっぽくできました。

最初「さくら」グループをしてみました。そしたらできました。(^^

ただ、やってみたものの「ばら」グループを抽出しようとして、A2に「ばら」と入力しても

さくらグループしかできないんです・・・・。


 データ→フィルタ→全て表示 を行ってから、実行してください。
 コードはマクロ記録で取れます。
 ただ、非表示セルが無いのに実行するとエラーになるから、
 コードで使う場合は、
 On Error Resume Next
 で、回避してください。

 おまけ、
 数式などを使用されているようでしたら、フィルタする前に
 再計算を手動にしておくと良いです。
 終わったら戻すこと。
 BJ


 >そのやり方をVBAで教えてもらってもいいですか? 
 と言う事でしたが、まだご興味がおありでしたら・・・。

 まずは、骨格となるコードを作成します。
 これは、マクロの記録で作成しましょう。

 まず、オートフィルタを設定してください。
 次に、分かりやすい様に見出し行以外の行をアクティブにした状態で
 ●記録開始
 1.見出し行の一つのセルを選択
 2.[グループ ▼ ]のオートフィルタで「さくら」を選択
 ■記録終了

 出来たコードをこちらへ載せて下さい。
 このコードを一部変更して、コードを作成します。

 (HANA)


BJさん、できました(^^ありがとうございました。

HANAさん、マクロ記録のコードを載せました。↓

Sub Macro2()
'
' Macro2 Macro
'

    Selection.AutoFilter Field:=1, Criteria1:="さくら"
End Sub


 >1.見出し行の一つのセルを選択
 の手順が見あたりませんが・・・?

 (HANA)

すみません(^^;

Sub Macro3()
'
' Macro3 Macro
'

'

    Range("A4").Select
    Selection.AutoFilter Field:=1, Criteria1:="さくら"
End Sub


 このコードの内「"さくら"」と成っている所が
 InputBoxに入力した値に成れば良いのですよね?

 InputBoxはどの様に書くか調べてみましたか?
http://www.google.co.jp/search?hl=ja&q=%E3%82%A8%E3%82%AF%E3%82%BB%E3%83%AB%E3%80%80InputBox&lr=

 wd = Application.InputBox(Prompt:="検索する文字を入力して下さい。", Type:=2)
 ↑の様に書けば良いですよね?
 すると、wdに入力した文字が入るので「"さくら"」と置き換えます。
     Selection.AutoFilter Field:=1, Criteria1:=wd
                                               ~~ここが置き換え

 Sub Macro3()
     Dim wd As String
     wd = Application.InputBox(Prompt:="検索する文字を入力して下さい。", Type:=2)

     Range("A4").Select
     Selection.AutoFilter Field:=1, Criteria1:=wd
 End Sub  

 これで動かしてみると、
 1.入力せずに「OK」が押されたとき
 2.「キャンセル」が押されたとき
 には、一致するワードが無いので何も抽出されません。

 そこで、その様な時は「全て表示」で終わりたいですよね?
 これも記録でとると
    Selection.AutoFilter Field:=1
 と言うコードが得られます。

 入力せずに「OK」の時にwdに入るのは ""
 「キャンセル」が押された時にwdに入るのは "FALSE"
 なので、wdの値がこの二つの内のどちらかだったときは
    Selection.AutoFilter Field:=1
 を実行するように変更しましょう。

 '------
Sub A列オートフィルタ()
Dim wd As String
    wd = Application.InputBox(Prompt:="検索する文字を入力して下さい。", Title:="検索文字入力", Type:=2)
    Range("A4").Select
    If wd = "" Or wd = "False" Then
        Selection.AutoFilter Field:=1
    Else
        Selection.AutoFilter Field:=1, Criteria1:=wd
    End If
End Sub
 '------

 (HANA)


HANAさん、非常に分かりやすい回答ありがとうございました。

やってみましたら、できましたぁ(^ー^)ノ

ありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.