[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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さん上記の通りやってみようとしたんですが、「A4選択、Ctrl+*」と書いている様にA4を選択してCtrlを押しながら*を押してみました。すると、A4の所に時間が表示されて、なんだかよく分からないんです。
やり方間違ってますよね?
HANAさん、ありがとうございました。
そのやり方をVBAで教えてもらってもいいですか?
>BJさん上記の通りやってみようとしたんですが、「A4選択、Ctrl+*」と書いている様にA4を選択してCtrlを押しながら*を押してみました。すると、A4の所に時間が表示されて、なんだかよく分からないんです。
あ、テンキーの方の「*」です。 文字キー?の「け、:」なら、 Shift + Ctrl + * BJ
なんとか、オートフィルターっぽくできました。
最初「さくら」グループをしてみました。そしたらできました。(^^
ただ、やってみたものの「ばら」グループを抽出しようとして、A2に「ばら」と入力しても
さくらグループしかできないんです・・・・。
データ→フィルタ→全て表示 を行ってから、実行してください。 コードはマクロ記録で取れます。 ただ、非表示セルが無いのに実行するとエラーになるから、 コードで使う場合は、 On Error Resume Next で、回避してください。
おまけ、 数式などを使用されているようでしたら、フィルタする前に 再計算を手動にしておくと良いです。 終わったら戻すこと。 BJ
>そのやり方をVBAで教えてもらってもいいですか? と言う事でしたが、まだご興味がおありでしたら・・・。
まずは、骨格となるコードを作成します。 これは、マクロの記録で作成しましょう。
まず、オートフィルタを設定してください。 次に、分かりやすい様に見出し行以外の行をアクティブにした状態で ●記録開始 1.見出し行の一つのセルを選択 2.[グループ ▼ ]のオートフィルタで「さくら」を選択 ■記録終了
出来たコードをこちらへ載せて下さい。 このコードを一部変更して、コードを作成します。
(HANA)
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)
やってみましたら、できましたぁ(^ー^)ノ
ありがとうございました。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.