• ベストアンサー

エクセルで2つ以上で絞り込み検索がしたい

エクセルで受注票を作っているのですが件数が多くなり、過去にどこどこがなになにをどの位作ったかを知る祭にいつも会社名か品名で検索してましたが、これを検索でどこどことなになにと入力すると、リストで過去の一覧が出るようにしたいのですが どなたか、御教授いただけますようお願いします。 シートを増やしてもかまいません。 中身は 納品日、受注日、会社名、品名、数量などなどです マクロでもかまわないですが、詳しくはないのでなるべく分かりやすいようにお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

(例データ)Sheet1のA1:E8  基データ 納品日 受注日 会社名 品名 数量 1/11/2004 1/10/2004 山田商店 管 3 2/11/2004 2/10/2004 大木工事 銅版 2 3/11/2004 3/10/2004 木村建設 パイプ 4 4/11/2004 4/10/2004 岡野リフォーム 棒 5 4/11/2004 5/10/2004 大木工事 銅版 12 5/11/2004 6/10/2004 岡野リフォーム ナット 10 5/11/2004 6/10/2004 大木工事 銅版 234 (ボタン) Sheet1の上にコマンドボタンを1つ貼りつけ。 (クライテリア:条件)Sheet2のA1:B2 会社名 品名 木村建設 パイプ 必ず項目見だしが要ります。 会社名、品名は検索の都度入力する (VBAコード) Private Sub CommandButton1_Click() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") sh2.Range("f1:j10").Clear sh1.Activate sh1.Range("A1:E10").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("Sheet2").Range("A1:B2"), _ CopyToRange:=Range("F1:J10"), Unique:=False sh1.Range("f1:j10").Copy sh2.Activate sh2.Range("a3").Select ActiveSheet.Paste End Sub (結果)Sheet2に(A1:E4に) 会社名 品名 木村建設 パイプ 納品日 受注日 会社名 品名 数量 3/11/2004 3/10/2004 木村建設 パイプ 4 Sheet1にコマンドボタンを貼りつけ、ダブルクリックすると。 (VBA) Private Sub CommandButton1_Click() End Sub が出るから、上記コードをコピペする。 そして、実行メニューをクリックして、デザインモードを抜ける。 (使い方) Sheet2のA2:C2に会社と品物を入力する。 そしてSheet1のボタンをクリックする。 Sheet2のA3以下に検索結果が出る。 (エクセル2000)フィルタでは別シートに結果を出せないので、Sheet2へコピーして来ている。 (注意) Sheet1のF-J列は空けておくこと。 上記コードの中のJ10,E10の10はデータ数を多い目に見積もって、最下行数に変更して、指定してください。

VALTAN
質問者

お礼

お礼が遅くなり大変失礼しました。 やっと、マクロをもとに作業をし始めました。 ただいま格闘中です。 本当に失礼しました。

その他の回答 (3)

回答No.3

こんにちは。 オートフィルターについては、試しておられますか? 過去の一覧等はその都度絞り込むことになりますが、 タイトルにあるような二つ以上の絞り込み 「納品日が11/19」かつ「会社名=北海道商店」 のような絞り込みは簡単に出来ますよね。 オートフィルターのオプションを使うことで 「日付が11/1-11/30」だけなども出来ますし、 データを数えるだけなら、絞り込んだ状態で 右下のなんていうんでしたっけ?(「平均」「個数」「合計」などを表示させることが出来る部分)を使うことも手だと思います。 「データ」「フィルター」「オートフィルタ」ですのでまだでしたら試してみてください。 かなりの機能があります。 また、それではダメだというのであれば、データベース関数、例えば納品日が11/19or11/20 かつ、岩手商事 プリンターの金額を合計して欲しい、というような「=DSUM」 や「=sumif,=countif」といった関数も使えます。 あとはVBA(マクロ)になるんでしょうけど、それは他の方にお譲りします。m(_ _)m

VALTAN
質問者

お礼

お礼が遅くなり大変失礼しました。 オートフィルタは何回か試しましたが、思ったように動いてくれませんでしたのでマクロで試そうと思います。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

件数や金額なら数式でも可能ですが一覧なら 「データ」「フィルタ」「オートフィルタ」で 会社名と品名を抽出すればいいのでは?

VALTAN
質問者

お礼

お礼が遅くなり大変失礼いたしました。 フィルタでは思ったように動いてくれませんでしたのでマクロでやってみようと思います。

回答No.1

こんにちは。 マクロでもなんでもないですが、オートフィルタはダメでしょうか? 参考URLのページでオートフィルタについて解説されています。

参考URL:
http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu9_2.htm
VALTAN
質問者

お礼

お礼が遅くなり大変失礼いたしました。 フィルタでは思ったように動いてくれませんでしたのでマクロでやってみようと思います。

関連するQ&A