• 締切済み

エクセルにて絞込み抽出!

   A列  B列  C列  D列 E列 F列・・O列   1行 月度 店名 店員名 項目 数量 個数 合計 2行  1  東京 A子  初回  10  12  20 3行  1  東京 A子  5回目  20  40  21 4行  3  東京 A子  5回目  30  28  10 5行  4  東京 A子  初回  32  89  11 6行  1  大阪 C男  初回  11  13  12 7行  2  大阪 C男  5回目  77  22  211 8行  3  大阪 D子  初回  33  31  53 9行  1  京都 E子  最終  44  22  23 10行  2  京都 T男  初回  22  54  23 Sheet1(データベース)に上記のようにデータが約3000行あります。 「1月の東京店、A子の初回の合計は?」といった通常オートフィルタで抽出する作業をSheet2のシートで「絞込みしながら検索」するようにフォーム上でしたいのですが。 まず、リストボックス1で1月を選択すると、その抽出結果のみからリストボックス2で店名を選択。店名東京を選択すると同様にその抽出結果のみから店員名をリストボックス3で選択。同様にリストボックス4で項目「初回」を選択すると合計が表示されると言った具合にしたく思います。 参考までにリストボックスからの選択としていますが、よりベストな方法をご教授願います。 Accessで簡単に解決することと百も承知ですが・・・ ようは絞込みしながら検索していく手法を教えてください。

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

質問内容を具体化してみましたがかなり大変な作業です。まず、質問に対する疑問から、 1.リストボックスは表示→フォームのリストボックス?またはコントロールツールボックスのリストボックス? 2.『フォーム上でしたい』はユーザーフォームを使ってもいい?それともリストボックスのこと? 3.初期状態はどのような想定?全項目無選択? 4.リストボックスのリスト内容はソートする? 4.あるリストボックスを選択したら、他のリストボックスは当然連動して内容を変える? 5.最後に1件まで絞り込んだら2回目の絞込みは行う? やってみたことは、手順だけ上げると、(上記疑問は作り易い方にしました) 1.ユーザーフォームにコンボボックスを4つ配置 2.ユーザーフォームを開いたら初期設定で各コンボボックスにソートしたリストをセット 3.任意のコンボボックスで項目を選択したらオートフィルタ結果を表示してシート2にコピー 4.同時にコンボボックスのリスト内容を更新 5.1件になって再度絞り込みを行うために初期化ボタンを配置 概略、この位で実現できると思います。コントロール配列とかも使えないのでコードはかなり長いです。(書ききれません) 労多くして・・・の気がしますね。Accessでもゴタゴタするかもしれません。 >よりベストな方法をご教授願います 多分、リストボックスを作ることはExcelのオートフィルタ機能を、他の道具を使って実現するだけの話で得策でないような気がします。 余り回答らしくなっていないので、思いついた方法を挙げておきます。 シート1しか使いませんが、まずデータ→フィルタ→オートフィルタを実行しておきます。 A.メニューのウインドウから『新しいウインドウを開く』を選択します。 B.メニューのウインドウから整列→上下に並べて表示を選択 C.下のウインドウだけを200%~250%位に大きくします。 D.下のウインドウでツール→オプションで表示タグで     行番号、     シート見出し、     水平スクロールバー、     垂直スクロールバーのチェックをはずします。 E.A~D列と2行目までを表示するように下のウインドウの大きさを変えます。   コンボボックスを4つ並べたように見える? F.上のウインドウは大きくします。 G.下にあったウインドウを好きな位置に配置します。絞り込みはこのウインドウから行います。 不満足かもしれませんが、代替案です。ご参考に。(Excel2000です)

keyman
質問者

補足

非常にわかりやすいご回答ありがとうございます。 代替案まで立案いただき本当にありがとうございます。 今回質問したのは誰もがマウス操作だけで処理が出来るようにと思ったからです。 ユーザーフォーム上にコンボボックスを4つ用意し 初期状態は全項目無選択、リストボックス1よりA列「月数」を選択後、 その抽出結果からリストボックス2でB列「店名」を選択、この要領でリストボックス3、4でC列で検索→D列で検索。(この4つの絞込み検索で1行のみとなります)そしてコマンドボタンを押すとその結果をテキストボックス1.2.3等にE,F,G列の内容を表示させたく思います。 欲を言えば1~4まで全項目を選択していないとコマンドボタンを押しても「入力ミスです!」等のダイアログボックスが出れば大満足です。 「AdvancedFilter」というものでやってみてはと助言いただきましたが、意味がわかりません。 Sheet2上で云々というのは無視してもらって結構です。 オートフィルタ機能を手作業ですることと同作業という事は十分わかっています。 大変お手数ですがご教授願います。

  • comv
  • ベストアンサー率52% (322/612)
回答No.2

再び こんにちは! >なぜならリストボックス1~4での絞込み検索する >事で1行のみの抽出となります。 解が必ず1つなら DGET関数が使えますが・・・オートフィルタのように その都度、絞込み複数表示するものではないのでご希望と 違いかもしてませんね!     A列  B列  C列  D列 E列・・O列 1行 月度  店名  店員名 項目 式・・・合計 2行 リスト リスト リスト リスト 式・・・ 式 E列以降の各式 =IF(COUNTA($A$1:$D$1)<4,"",DGET(表1,E$1,$A$1:$D$2) これをO列まで複写 データベースのフィールド名(項目)は、全て違うものであることが前提です。 (複数の戻り値があったり、1つもない時はエラーとなり  ますから、必要によりエラー回避の数式を組み合わせる  必要があります。) オートフィルタのようなリアルタイム表示にするには フィルターオプション機能をVBAで制御することになると思います。 その時は、他の方の書き込みをお待ちください!

  • comv
  • ベストアンサー率52% (322/612)
回答No.1

こんばんは! 各条件による合計の計を求めればよろしいのでしょうか? ・項目も含めた範囲に名前を定義(仮に表1) ・シート2    A列  B列  C列  D列  O列   1行 月度  店名  店員名 項目  合計 2行 リスト リスト リスト リスト 式 式 =DSUM(表1,$O$1,A1:D2) 意図したものと外していたらスミマセン

keyman
質問者

補足

早速の回答ありがとうございます。 合計の意は単に値表示するだけで検索して計算した結果ではありません。 なぜならリストボックス1~4での絞込み検索する事で1行のみの抽出となります。理解に苦しむ文面で大変申し訳ありません。

関連するQ&A

  • Excelでの文字列抽出

    Excelで文字列の抽出とそれを並べる方法を教えてください。 関数だけを用いて実現できるのか、マクロを使わなければできないのかも分かりません。 この関数をこの様に使えばよいというのを教えていただけると幸いです。 やりたいことは、下記条件で、シート2のB列にシート1のG列~P列までに登録されている担当者名に該当するB列の店名を4店まで抽出したいのです。 分かりづらくて申し訳ございませんが、よろしくお願い致します。 ------------------------ シートが2枚(シート1/シート2)あります。 シート1  B列は4行毎に結合されており、店名が登録されています。  G列~P列までは1行目は担当者名、2,3,4行目は補足情報が登録されています。  シート2  A列に担当者名が入っています。(4行毎に結合しています)  B列にA列の担当者名に該当する、シート1の店名を4店まで登録したい。

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • エクセルで検索→抽出

    お願いします。 シート(1)に次のように入力されています。 A列 B列 C列 D列 E列 → Y列 番号 県 性別 年齢 来社 1行目   1 東京 男  45 09/21  2行目   2 京都 女  33 10/07  3行目   3 福島 女  49 10/25  4行目   4 京都 男  25 12/05  5行目   5 東京 女  30 12/30  ↓ 以上のようにY列まで項目と、1110人のデータが 入ったシート(1)があります。 シート(2)に検索したい文字を入れて抽出する方法を教えてください。 例えば京都出身の人を検索したい場合↓ シート(2)の1行目にはあらかじめシート(1)の項目をコピーしておく 検索したい『京都』は「県列」の項目だから B列の2行目に『京都』と入力する。(1行目には項目) 3行目以降に検索結果↓が表示される。 2 京都 女  33 10/07  スイカ 4 京都 男  25 12/05  モモ 8 京都 女  58 05/04  りんご 12 京都 女  12 06/20  オレンジ また、年齢10~35を検索したりなどもできれば… データを入力したり検索したりするのは、パソコンに不慣れな方ですので エクセルに詳しくない人でも簡単に使用できるよう作成できればと思います。 以上、 検索項目を入力し、下の行に抽出されるような関数はありますでしょうか・・・? なければ近いものでも構いませんので教えてください。 宜しくお願い申し上げます。

  • エクセルで抽出(?)

    エクセルで名簿を管理しているのですが、メアドだけ、住所だけ抽出(リスト化)することは可能でしょうか? たとえば、「三の倍数行の二列目のセルを抽出(リスト化)」と言ったことです。 わかりにくいと思いますがどうぞお願いしますm(_ _)m

  • エクセルで入力途中でも抽出できますか

    シート1に名簿(A:氏名、B:ふりがな、C:性別、…)を入力しておき、シート2でふりがなを入力すると、該当する行が抽出できるようにしたいのですが…。 たとえば… シート1で「日本太郎(にほんたろう)」という人が入力されている名簿があるとして、シート2で検索する際、「に」の段階でふりがなの頭に「に」がついている人が表示(リストボックスのように)され、その中ですぐに発見できれば該当項目をマウス等で選択して抽出。数が多く、すぐに発見できないようであれば、続けて「ほ」と入力(表示上は「にほ」)して、同じように頭に「にほ」がついている人を表示(リストボックスのように)、その中ですぐに発見できれば該当項目をマウス等で選択し抽出。といったように、どんどん該当するものを絞っていき、抽出する方法です。中には、同じ名前の方もいるので、最後まで入力した後、氏名の漢字等で選択するようになりますが、こんなことはできますか。 ちなみにエクセルは2002です。わかりにくい説明で申し訳ありませんが、よろしくお願いいたします。

  • VBAのデータ抽出について

     列  A   B   C 行1 番号  色   形  2  1   白   丸  3  2   赤   三角  4  1   赤   丸  5  3   黄   四角 (1)Excel Sheet1にコマンドボタン1があり、それをクリックするとUserForm1が表示されます。 (2)UserForm1には「番号」「色」「形」の各コンボボックス1,2,3が配置されています。 (3)各コンボボックス1,2,3に表示されるのは、Sheet1の各列のデータです。 (4)コンボボックス1,2,3のうち1つ選択→その条件に合うデータを抽出。  コンボボックス1,2,3のうち2つ選択→その2つの条件に合うデータを抽出。  コンボボックス1,2,3のうち3つ選択→その3つの条件にあるデータを抽出。 (5)Sheet1のコマンドボタン2をクリックすると、Sheet1は元のデータ一覧に戻る。 というようなプログラムを組みたいと思っています。 (4)のデータ抽出、(5)の戻し方がよくわかりません。 どなたかご教授下さい。

  • エクセルの抽出に関するマクロ

    (1)OSはVistaです。 (2)エクセル2007を使用しています。 (3)シートは「会員情報」「抽出条件」「抽出結果」の3枚です。 (4)「会員情報」シートのA5からR588までデータ(氏名、住所、電話番号など)が入っています。A5からR5は、タイトル行(フィールド)です。R列は「フォームコントロール」で挿入したチェックボックスです。。 (5)「抽出条件」シートには、会員の種類による抽出ができるような条件(正会員、準会員、協賛会員など)が設定してあります。 (6)「抽出結果」シートには、抽出された結果がコピーされます。 「会員情報」シートのデータを、「抽出条件」シートで指定した条件で抽出し、「抽出結果」シートにコピーするマクロは成功しました。 チェックボックスにチェックを入れた会員を抽出し、その方たちの郵便用ラベルを作成するのが最終目標ですが、今は「会員情報」シートのチェックボックスを使った抽出とその結果のコピーができないところでストップしています。チェックボックスを使った抽出とその結果のコピーのマクロを教えてください。

  • Excelで合致するデータの抽出について

    初歩的な質問ですが どうしてもうまく抽出できないので教えて下さい。 Excelでシート1のリストの項目は5列で 社員No.社員名・性別・住所・Telが入力されている 全社員データが200件あります。 またシート2のリスト項目は6列あり 社員No.社員名・支店名・性別・住所・Telが入力されており、 支店名にはすべて東京と入力されているリストが50件ほどあります。 シート2の社員データ50件を、 シート1の全社員リストから 抽出する方法を教えていただけないでしょうか。 抽出場所はどこでもかまいません。 申し訳ありませんが、よろしくお願いします。

  • エクセルで検索、抽出

    卒論で膨大なエクセルファイルからデータを抽出しなければなりません。 例えば 番号 県 性別 年齢 来社 1 東京 男  45 09/21  2 京都 女  33 10/07  3 福島 女  49 10/25  4 京都 男  25 12/05  5 東京 女  30 12/30  このようなシートから年齢が30歳~40歳まで行を抽出し、 2 京都 女  33 10/07  5 東京 女  30 12/30 このようなシートを作りたいのですが どのようにしたら良いのでしょうか? エクセルには不慣れなので出来れば簡単な方法だと嬉しいです。 つたない文章ですがよろしくお願いします。

  • エクセルVBAについて質問です。

    エクセルVBAについて質問です。 シート1のユーザーフォームにコンボボックスとテキストボックスが各1つずつ、 シート2のA列には1行目から順に「あ」「い」「う」と文字が入っていて、B列には「1」「2」「3」と値が入っています。 コンボボックスのリストにはシート2のA列の文字が選択できる状態にあります。 この状態で、例えばコンボボックスで「い」を選んだら、テキストボックスに自動的に「2」と入る、というように、コンボボックスのリストの中から任意の文字を選択したときに、テキストボックスにB列の値が入るようにするにはどのようにすればいいのでしょうか?よろしくお願いします。

専門家に質問してみよう