• ベストアンサー

エクセルのマクロで、次の場合にどの様に組めばいいのか。

あるブックに  検索用シート  シートA  シートB  シートC  シートD があり、検索用シートの中には  リスト1・・・A,B,C,D  リストA・・・・E,F,G,H,I  リストB・・・・J,K,L,M,N,O  リストC・・・・P,Q,R,S,T  リストD・・・・U,V,W,X,Y,Z がとなっている。 リスト1にあるA~Bは製造会社 リストA~DにあるE~Zは製品名 シートA~Dには、製品E~Zの性能一覧 検索用シートの  セルA1  セルA3  セルA5 がリストを選択するセルとして、 (1) セルA1で、リスト1からA~Dの何れかを選択する。 (2) セルA1の選択結果から、該当する製造会社のリストをセルA3に反映させる (3) セルA3で選択した製品一覧から、一つの製品を選択し、セルA5のリストに反映させる (4) A5で選択させた製品から、必要項目だけを抜き出しA7~A20に表示させる。 当然各アクションは、ボタンを押すことにより反映するものとして作っていますが、自動記録でマクロを組んでいるのですが、選択したモノを反映させる方法が分かりませんし、自動記録のマクロでは、リストからの選択が反映されないようなのでお願いします。 エクセルのバージョンは2002か2003です。

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

  • ベストアンサー
noname#187541
noname#187541
回答No.1

こんばんは。 なんかよく分かってないのですが、マクロでとのことですが入力規則で出来そうに思いましたので、参考URLを紹介します。 入力規則応用編!階層構造のリスト http://kokoro.kir.jp/excel/list-indirect.html

keiji29
質問者

お礼

回答、有難う御座います。 最初に入力規則を使うことまでは分かっていたのですが、その先の入力規則を設定するところでの処理が分からなかったので、参考にさせていただきます。

その他の回答 (2)

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

相当苦労しましたが、必要項目の検索の前までを上げます。 入力規則のドロップダウンでは、MultiSelectはできないと思うので 製品1つを、クリック2回(会社1回、製品1回)で決めます。後は 「必要項目だけを抜き出し」が残っています。 むしろ、入力規則や、フィルタを使わず、VB式にコントロールのプログラムを組んだほうが簡単になって、良いかもしれない。 Sheet1のA1:A4 会社 アストラ 製品 アスxx1 A2とA4がドロップダウンが出ます、。 Sheet2 会社名をA列に列挙。 武田 山之内 アストラ 大正 大塚 アベンティス Sheet3 会社名と製品名を列挙。A1:B24 A列  B列 会社 製品 武田 武x1 武田 武y1 武田 武z1 武田 武u1 武田 武v1 武田 武w1 山之内 山x2 山之内 山y2 山之内 山z2 山之内 山u2 山之内 山v2 アストラ アスxx1 アストラ アスyy1 アストラ アスzz1 アストラ アスuu1 大正 大a1 大正 大b1 大正 大c1 大正 大d1 大塚 塚j1 大塚 塚k1 大塚 塚l2 アベンティス アベm2 Sheet4 A2で指定した会社の製品名。A1:B22の一部。 会社 製品 アストラ アスxx1 アストラ アスyy1 アストラ アスzz1 アストラ アスuu1 ーーーーー 範囲名を定義 会社  Sheet2のA1:A6 製品  Sheet3のA1:B25 選択社製品 Sheet4のA1:B22 選択会社製品B Sheet4のB1:B22 ーーーーーー 標準モジュール (1回実行) Sub Macro1() With Range("A2").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=会社" .IgnoreBlank = True .InCellDropdown = True .ShowInput = True .ShowError = True End With End Sub ーーーー 標準モジュール Sub Macro5() Range("製品").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "A1:A2"), CopyToRange:=Range("選択社製品"), Unique:=False '---- Range("a4") = "" End Sub ーーーーーー 標準モジュール Sub Macro3() Range("a4") = "" With Range("A4").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:="=選択会社製品B" .IgnoreBlank = True .InCellDropdown = True End With End Sub ーーーーー Sheet1のイベントモジュール Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim sh1 As Worksheet Set sh1 = Worksheets("Sheet1") If Target.Address = "$A$2" Then '------ Macro5 '---- DoEvents Macro3 '----- End If Application.EnableEvents = True End Sub

keiji29
質問者

お礼

ご回答有難う御座いました。 小生はマクロがまだまだ初心者なので、これを参考にさせていただきます。

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

質問の表現がわかりにくい。 「リスト」という言葉はエクセルで別の意味(データベースのデータのこと)があるので注意されたい。 http://homepage1.nifty.com/kenzo30/ex_kisosyo/ex_ks_syokyu7.htm ここでは、入力規則の「リスト」の項目(アイテム)のことのようですね。 2,3段に分けて質問が記述してあるのは、頭の良い方とお見受けしますが、読むほうには何度も読まないと、理解できない。根気のない人はスキップしてしまう。 私なりに、質問を表現してみると ===== 「セルA1で製造会社を入力規則のドロップダウンリストから選ぶ。その選んだ製造会社「だけ」の製品だけをセルA3のリストに表示する。A5にはその製品「だけ」の性能項目を表示し、選んだ複数項目 をA7-A20に表示する。ただし性能項目は4シートにまたがって存在する。 ======= 質問として、これでよいでしょうか。 多段式の入力規則のリストの構成方法の質問は、過去にも相当数出ていますが、検索キーワードが作りにくいのです。「入力規則 リスト」でOKWAVEで照会してはどうでしょう(ごみも混じるが)。だだし回答を読んでも、理解力が要る。 性能一覧が多シートにわたっているのが、難しくなりそうですね。 マクロの記録ではできません。 VBAでも上級の問題でしょう。アクセスのようにSQLが使える場合であれば、平易に作れるもののように思います。

keiji29
質問者

補足

imogasiさん、ご回答有難う御座います。 リストと質問についてはその通りです。 アクセスを使えればよいのですが、アクセスがない状況で作成をしなければいけないので、困っています。 エクセル自体もマクロ自体も初心者なので、本当に困ってしまっています。 参考にさせていただきます。

関連するQ&A

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

  • エクセルマクロについて教えてください。

    製品リストというシートと、発注リストという2つのシートがあります。 製品リストのシートには、A列に製品名、B列に在庫が入力されています。 発注リストのシートには、A列に製品名、B列に値段、C列には発注状況が入力されます。(C列は発注完了と発注取消の2項目のリスト選択となっています) 発注リストのシートのC列に発注取消と入力された場合に、発注取消と入力された行にある製品名をを、製品リストシートのA列内を探し、同じ製品名の入力されたセルに色を付けたいです。 例えば 発注リストシートのA5に ココナッツミルク B5に 100円と入力されており、C5に 発注取消 と入力した場合に 製品リストシートのA列にある ココナッツミルク と書かれたセルを赤色にしたいのですが、 どのようなマクロにすれば良いのでしょうか? どなたが教えていただけると助かります。

  • Excelでマクロ設定したが反映されない(初心者です)

    Excelでマクロを設定したのですが、なぜかきちんと反映されません。 以下、主な作業(実際の作業とは少し違いますがだいたい主な作業)を記載してみました。なぜ反映されないのか分からないので、もしお分かりになる方がいらしたら教えてください。必要な情報が足りない場合は、付け足します!マクロ初心者、というか、Excelも関数をたまに使う程度なので、基本から間違えてたりするかもしれませんがお願いいたします。 ※一連の作業がまずワークシートを1枚増やして、その後、必要なデータを貼り付け、さらに作業にうつります。ということで、キリのいいところで作業を2つに分けています。 【STEP1】 新しいマクロの記録 ok 挿入 ワークシート Sheet4タブを a と変更 Sheet1タブを b と変更 Sheet2タブを c と変更 Sheet3タブを d と変更 記録終了 【STEP2】 新しいマクロの記録 ok タブabcdを選択 作業グループの状態で、 全体の文字サイズを10に変更 行を3行挿入 A1セルの文字サイズを16に変更 4行目を選択し、文字位置を中央揃え A4・B4・C4・D4・E4・F4のセル色を青に変更 シートaのA1にaと入力 シートbのA1にbと入力 シートcのA1にcと入力 シートdのA1にdと入力 シートaとシートcとシートdを選択 作業グループの状態で、 B列・C列を選択 桁区切りスタイルに変更 シートcを選択 C列・D列を選択 桁区切りスタイルに変更 G4セルを青に塗りつぶし 記録終了 保存 (Book1.xls) 新規作成 マクロ Book1.xls!Macro1 実行 ★シートabcdにそれぞれ必要なデータを貼り付ける。 マクロ Book1.xls!Macro2 実行 ⇒シートdのみにマクロで記録させたものが反映されている。 他のシートは部分的に反映されたりしている。

  • エクセルでマクロ作成したい。こんな事できますか?

    AのシートとBのシートがあるとします。Bのシートに A(セル) B C D E F G・・・・ 1      2 3 4 5 6 7 11     5 4 5 3 7 6 とあるとして, Aのシートには BシートのAセルの列を入力規制のリストでプルダウンにしBシートの行のデーターを検索できるようにしたいです。出来ますか?

  • エクセルのマクロで、セルの値を参照してジャンプ

    エクセルのマクロで、セルの値を参照して、 別シートにジャンプして貼り付けたいと思っています。 <Sheet1>  |  A  B  C ------------------------------------ 1|  A1  あ  100 2|  B5  い  50 3|  C7  う  80 4|  D3  え  20 5|  E9  お  40 <Sheet2>  |  A  B  C  D  E ------------------------------------ 1|  あ 2|  100 3|         え 4|         20 5|    い 6|    50 7|       う 8|       80 9|            お 10|            40 といったイメージです。(お分かり頂けますか?) Sheets1!B1:C1を選択し、A1のセルの値を参照して、Sheets2!A1にジャンプして、 行列入れ替えて貼り付ける、といったマクロを組みたいのですが、 セルの値を参照する部分が分かりません。 実際はSheets2の様なシートは複数あり、1つのリストから複数の形式を変えた表を 作りたいと思っています。 Sheets2以降のシートに見出し行を加え、VLOOK関数を組み込んだ表を作っておき、 結果を貼り付けて見出し行を削除する、といったマクロは組めるのですが、 セルを参照してジャンプして貼り付けてくれると便利だと思い質問させて頂きました。 どなたかお知恵を拝借できましたら嬉しいです。 宜しくお願い致しますm(_ _)m

  • エクセルマクロでVLOOKUPのよう列を貼る

    初めましてよろしくお願いします。 シート2に       A     B     ・・・・・・・・・   Z 1   900     5               5 ・   903     40              60 ・    ・       ・               ・ 300 220     1     ・・・        100 301 210     10    ・・・        1000   302 200     15    ・・・         20 ・ ・ ・ が有ります。シート1のE10に210と入力されている場合、マクロを実行するとA列を検索し、シート2のA301の値と一致する301行をシート1のE11から列に変換しコピーされるようにしたいと思います。 シート1結果    A     B     C     D     E 1 2 ・ ・ 10                        210 11                         10 ・                           ・ ・                           ・ 35                        1000  解る方、よろしくお願いします。

  • EXCELの質問です。どなたか教えてください。

    EXCELの質問です。どなたか教えてください。 Sheet1のA1,B1,C1にSheet2のA1,C1,E1と、一つ飛ばしの 値を反映させるにはどうしたらいいですか? Sheet1のセルA1,B1に A1=Sheet2A1,B1=Sheet2C1とし、2つのセルを選択してドラッグしても A1=Sheet2A1,B1=Sheet2C1,C1=Sheet2C1,D1=Sheet2E1,E1=Sheet2E1,F1=Sheet2G1・・・ と反映されてしまいます。 できれば小難しい計算式は使いたくないのですが、なにかいい方法や簡単な 式があったら教えてください。 宜しくお願い致します。

  • エクセルのマクロでセル選択するには

    初心者です! エクセルのSheet1に30箇所のセルをマクロで選択したいのですが、 たまに選択するセルが変わります。 そこで、Sheet2のA1から下へSheet1の選択する位置を「B2」「C5」「D10」・・・としてマクロで一発で30箇所のセルを選択する方法を教えてください Sheet2のA1から下へ入力するセル位置はその都度変化します。 変化したときにそのマクロを実行すると選択できるといいのですが!! よろしくお願いします。

  • EXCELのマクロで。。。

    シートAのセルC2の値(数字)を シートBのE、F、Gの各列のうち空いている一番左のセルで、かつ、D列に何か書いてある一番下の行のセル に転記したいです。 たとえば、シートBが図のような場合にはF28です。これが毎回、変化します。 マクロの記述を教えて下さい。よろしくお願い致します。

  • エクセル2007のマクロで検索

    マクロ初心者です。 どうぞよろしくお願いします。 sheet1のB1セルに都道府県名を入力すると、sheet2にある市町村名を抽出して、sheet1のB列(B3以降)に 反映したいのですが、どうぞご教授下さい。 (1)sheet1のB1セルに都道府県(例えば沖縄)を入力 (2)sheet1の適当な場所に『検索』ボタンを配置して、このボタンを押すと検索開始 (3)sheet2を検索して、ヒットした列の値(市町村)とセルの色をsheet1のB列に反映  この時、ヒットした列(都道府県)の値(市町村)の数はそれぞれ違うので、フレキシブルに反映 <sheet1>  B1 ⇒ 都道府県入力欄  B列(B3以降) ⇒ sheet2の値(市町村)を反映(都道府県により値の数は違います) <sheet2>  B2⇒東京都...............C2⇒沖縄県.............D2⇒埼玉県  B3⇒港区(セル色=青)......C3⇒那覇(セル色=灰)....D3⇒蕨(セル色=橙)  B4⇒江東区(セル色=黄)....C4⇒豊見城(セル色=黄). D4⇒草加(セル色=赤)  B5⇒江戸川区(セル色=緑)..C5⇒東風平(セル色=青)..D5⇒川越(セル色=緑)  B6⇒品川区(セル色=橙)....C6⇒空欄...............D6⇒大宮(セル色=紫)  B7⇒渋谷区(セル色=紫)....C7⇒空欄...............D7⇒空欄 【例】  sheet1のB1セルに[沖縄]と入力して『検索』ボタンを押下すると、sheet1に以下のように値が返る B3⇒那覇(セル色=灰) B4⇒豊見城(セル色=黄) B5⇒東風平(セル色=青) 宜しくお願いします。

専門家に質問してみよう