- 締切済み
コンボボックスに、組み込むマクロ
こんにちは。 一人ではどうしたらよいか、わからないので、お判りの方がいらっしゃいましたら、お願い致します。 コンボボックスで、選択した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)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 おそくなりました。ごめんなさい。 せっかく細かく書いていただいたのですが、私には、残念ながら、表がほとんど理解できませんでした。 基本的な、その表の約束ごとが、理解できないままになってしまっています。おそらく、そのままでは、マクロを搭載するには無理です。肝心な部分で、「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)
こんにちは。Wendy02です。 今気がつきました。レスがつきませんね。ちょっと、内容を読んでみて、肝心な部分のご説明が良く分かりません。 >例えば(会社ID)<H1,H2,H3>を小計1、<H1,H2,H3,H4>を小計2として表示させたいのです。 というのは、実際のH1 の部分は、表の範疇にはないので、さっぱり意味が通じません。 おそらくはH1~というのは、数値だということぐらいで、VlookUpでB1に出したものをどうすればよいのか分からないのです。H1~H3 というように都合よくは並んではいないのではありませんか?その解決方法はマクロだと、逆に、大げさになってしまうので、配列数式で対処するというのだ予測しています。 出来れば、スモールサンプルを作って、それで考えられるようにしていただいたほうが、良いかなって思います。
補足
こんにちは。 今、自分で読んでもわかりにくい説明ですね。…すみません。 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」と表示されてしまいました。