- 締切済み
複数条件抽出をVBAで
excelの複数条件抽出をVBAでやりたいので教えてください。 エクセル2003で複数条件抽出をしたいと思っています。 dateのシートに、A列:日付、B列:名前、C列:金額があります。 それを1というシートに、日付と名前の2つの条件が合致している金額を抜き出したいと思っています。 抜き出すのは0601&AさんをA5セル~A20 0601&BさんのはB5~B20へ ということは可能でしょうか? もしよろしければ教えていただければ助かります。 'date'シート 日付 名前 金額 0601 Aさん 100円 0601 Aさん 120円 0601 Bさん 150円 シート'1' 0601&Aさん 0601&Bさん 100円 150円 120円 どの人がやってもボタン1つで実行できるようにしたいために、 VBA出できればと思っております。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
(1)エクセルにあるフィルタオプションの設定をVBAで行う。そのためには初心者であれば ーー>マクロの記録を採って勉強すること。 (2)上行から最後行までシートのデータを1つずつ読んで、そのレコード(行のこと)の列内容が If Range(”B”& i)="前田" And Range(”A” & i)=#2011/6/11# then (他シートなりへ、その1行転記処理) End f などを行う。 ーー 参考 Sub test01() For i = 2 To 20 If Range("A" & i) = #6/13/2011# And Range("B" & i) = "前田" Then MsgBox Range("A" & i) & Range("B" & i) End If Next i End Sub 上記の20にあたる、最終行を割り出すコードなど必要だが略。 他シートへ該当分の書き出しなども必要だろうが略。 ーーー 例データ 2011/6/11 2011/6/12 2011/6/13 前田 2011/6/14 2011/6/15 2011/6/13 今井 2011/6/17 2011/6/18 2011/6/19 でテスト済み。 ーーー しかし上記に付帯した修正の知識も質問者には現状無いと思われ、現状では背伸びしすぎだと思う。 VBAの本などで標準的な例題を頭に入れるのが必要と思う。 ーー >どの人がやってもボタン1つで実行できるようにしたいために A.ボタンのクリックイベントや B。名前や年月日をその都度、プログラムで受け取る仕組みが必要だが、そのコードは判っているのか。 質問の表現振りからは、質問者は、他人に使わせるようなものを作る段階とは思えない。もっと修行してからの話では。 他人に使ってもらうには、色々と織り込まなければならないことがあり、VBAの熟練者の課題だと思う。
- keithin
- ベストアンサー率66% (5278/7941)
sub macro1() worksheets("data").range("A:C").autofilter field:=1, criteria1:="=0601" worksheets("data").range("A:C").autofilter field:=2, criteria1:="Aさん" worksheets("data").autofilter.range.columns(3).copy destination:=worksheets("1").range("A5") worksheets("data").autofiltermode = false worksheets("1").range("A5") = "0601&Aさん" end sub sub macro2() worksheets("data").range("A:C").autofilter field:=1, criteria1:="=0601" worksheets("data").range("A:C").autofilter field:=2, criteria1:="Bさん" worksheets("data").autofilter.range.columns(3).copy destination:=worksheets("1").range("B5") worksheets("data").autofiltermode = false worksheets("1").range("B5") = "0601&Bさん" end sub sub macro3() macro1 macro2 end sub シート上にオートシェイプの図形等でボタンを作成 右クリックしてマクロの登録で用意したmacro3を登録して完成。 #実際には >ボタン一つで実行できるようにしたい 一体全体どんな風にして条件(0601じゃなく実際には?)を指定したいのか,そういった現実的な使い勝手について,もっと具体的な検討が必要です。 今回ご質問の条件決め打ち(0601のAさんBさん)マクロをベースに改めて具体的なマクロの動作(設計方針)をしっかり考えて,必要に応じてまた別途ご質問を投稿してみてください。