• 締切済み

コンボボックスに、組み込むマクロ

こんにちは。 一人ではどうしたらよいか、わからないので、お判りの方がいらっしゃいましたら、お願い致します。 コンボボックスで、選択したIDで、別シートからの数値が表示されるシートがあります。 総計は、今のままでも出るのですが、あるカテゴリー: 例えば(会社ID)<H1,H2,H3>を小計1、<H1,H2,H3,H4>を小計2として表示させたいのです。 関数でも、マクロでも構いませんので、方法があれば教えてください。 Sheet1(集計表) A1:コンボボックス(会社名)選択  B1:会社ID(=VLOOKUP(A1,CD表!A:D,4,FALSE)             C2:科目(10) A3:項目名 B3:項目ID C3:件数 D3:金額 (人件費)   (455)  (12) (500000) ★SUMIF関数で、各数値をdataシートから持ってきています。 Sheet2(data) A列(ID) B列(会社名) C列(科目)D列(項目名) E列(項目ID)F列(件数) G列(金額) Sheet3(CD表) A列(ID)B(会社名)C(会社ID)

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 おそくなりました。ごめんなさい。 せっかく細かく書いていただいたのですが、私には、残念ながら、表がほとんど理解できませんでした。 基本的な、その表の約束ごとが、理解できないままになってしまっています。おそらく、そのままでは、マクロを搭載するには無理です。肝心な部分で、「H1」は、「=H1」 でしょうか、それとも、記号でしょうか、それが分からないのです。ある場所では、「会社ID」と書いてあり、ある場所では、「数値」として扱っているように見えます。 次に、 A1(小計1)  B1=(H1) B2=(H2)=VLOOKUP(A1,CD表!A:C,4,FALSE) これも、どう理解してよいのか分かりません。数式としては、成り立たないからです。 A1 は会社IDだったはずで、それが、小計ということになると、この先が進みません。 また、Sheet1 のB1~B3 で、VLOOKUPを使ってらっしゃいますが、それ自体が、A1 を検索値としていますが、コンボボックスではなく、入力規則のドロップダウン・リストだと思うのです。そうすると、マクロの入る余地がないとは言わないけれど、全体として必要のない内容になってしまいます。 また、この数式は、どうも分からないのですが、 C6=SUMPRODUCT((B1=Sheet2!C2:C700)+(B2=Sheet2!C2:C700 )+(B3=Sheet2!C2:C700))*(B6=Sheet2!D2:D700)*(Sheet2!E2:E700) C列は、会社IDですから、件数を数えるなら、SUMPRODUCT 一まとめにしてもよいのですが。 =SUMPRODUCT((B1=Sheet2!C2:C700)*(Sheet2!E2:E700))+SUMPRODUCT((B2=Sheet2!C2:C700)*(Sheet2!E2:E700))+SUMPRODUCT((B3=Sheet2!C2:C700)*(Sheet2!E2:E700)) このようになるのではないでしょうか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。Wendy02です。 今気がつきました。レスがつきませんね。ちょっと、内容を読んでみて、肝心な部分のご説明が良く分かりません。 >例えば(会社ID)<H1,H2,H3>を小計1、<H1,H2,H3,H4>を小計2として表示させたいのです。 というのは、実際のH1 の部分は、表の範疇にはないので、さっぱり意味が通じません。 おそらくはH1~というのは、数値だということぐらいで、VlookUpでB1に出したものをどうすればよいのか分からないのです。H1~H3 というように都合よくは並んではいないのではありませんか?その解決方法はマクロだと、逆に、大げさになってしまうので、配列数式で対処するというのだ予測しています。 出来れば、スモールサンプルを作って、それで考えられるようにしていただいたほうが、良いかなって思います。

nekonote19
質問者

補足

こんにちは。 今、自分で読んでもわかりにくい説明ですね。…すみません。 Sheet1を簡略化すると以下のようにります。 (質問時より、もう少しシンプルに考えてみました。) ()は入力例 A              B   C    D   コンボボックス 会社ID  (会社名で選択)      (○○(株))        (H1)  件数  金額 -------------------------------------------------- 人件費         (455) (12)件 \(500,000) 駐車場代        (234) (5)件 \(15,000)              ↑             項目No B1=VLOOKUP(A1,CD表!A:C,3,FALSE) コンボボックス(A1)に連動して、Sheet3(CD表)から会社IDが入るよう設定されています。 C列(件数)とD列(金額)は各項目の合計が、SUMIF関数で設定されています。 C=SUMIF(data!$A:$A,$B$1&"_"&B2,data!$E:$E) D=SUMIF(data!$A:$A,$B$1&"_"&B2,data!$F:$F) --------------------------------------------- Sheet2(data) A列        B列  C列 D列    E列  F列 会社ID&項目No  年月  会社ID   項目No   件数  金額 (H_1445)    (0601)   (H1)    (455)    (1)(100,000) (H_1445) (0602)    (H1)    (455)    (1)   (110,000) ------------------------------------------------ Sheet3(CD表) A列    B列     C列 No    会社名   会社ID (1) (○○(株) )  (H1) (2) (▲▲(株) ) (H2) ・ ・ (120)  (小計1)    (H1)    (H2)    (H3) (121) (小計2)    (H1)    (H2)    (H3)    (H4) (122) (総計)  (0) ----------------------------------------------- Sheet1の C列(件数)とD列(金額) がB1(会社ID)の値に依存しています。 これが、ただ小計を出すだけでしたら、Sheet2のC列を(H1)を(小計1)に置換するだけでも済むのですが、 1社ごとの数値も、コンボボックスで切り替えて見れることが必要なので、(小計1)や(小計2)が選択された時だけ、 該当する会社IDがマクロで切り替われば良いのではないか…?と考えました。  でも、なんだか又面倒なことになりそうな気もします。 あまり複雑なマクロになってしまうなら、B列に小計に含めたい会社IDを表示させて、 C列・D列の関数式(SUMPRODUCTなど)で、H1~H3(又はH1~H4)の値を合計した数値を出す方法があれば、 その方が楽ではないか…と今日思いつきました。 Sheet1 A       B   C    D   コンボボックス 会社ID       A1(小計1)  B1=(H1)        B2=(H2)=VLOOKUP(A1,CD表!A:C,4,FALSE)        B3=(H3)=VLOOKUP(A1,CD表!A:C,5,FALSE) 6列目(より 件数欄 C6=SUMPRODUCT((B1=Sheet2!C2:C700)+(B2=Sheet2!C2:C700 )+(B3=Sheet2!C2:C700))*(B6=Sheet2!D2:D700)*(Sheet2!E2:E700) ただ残念ながら、自分で試してみたところ、 合計数が出ず「0」と表示されてしまいました。

関連するQ&A