- ベストアンサー
串刺し計算(集計)マクロについて
いつもお世話になっております。 現在、シート間の集計をマクロでする作業を進めていますが、 1シート1企業に対し、 シートのC1にサービス名、D1に金額、E1に成否(入力規則よりリスト化)を記入するセルがあります。 このブックの集計をする場合、各シートのE1に”成”(入力規則よりリスト選択)が入力されたもののうち、集計シートのA1に、各シートのサービス名の割合、B2に合計金額を算出したいのです。 なお、シートは随時追加されて行きます。 どなたかご教示頂きますよう、お願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
「各シートのサービス名の割合」というのが、いまひとつ分かりませんのでE1が値”成”の合計金額を「集計シート」のB2に格納するマクロサンプルを Sub Sample() Dim Sh as Object Dim Total As Long Total = 0 For Each Sh in ThisWorkbook.Worksheets If Sh.Name <> "集計シート" And Sh.Range("E1").Value = "成" Then Total = Total + Sh.Range("D1").Value End If Next Sheets("集計シート").Range("B1").Value = Total End Sub
その他の回答 (3)
- Masa2072
- ベストアンサー率51% (94/182)
>> Sheets("集計シート").Range("B1").Value = Total > となっているので、このままでは集計シートのB1に記入されますが、そこはB2に直してあるんですよね? higekuman氏、訂正&補足ありがとうございます。 質問文&補足文から質問者の意図が全く読み取れません。 少し落ち着いて、現状&目的をはっきりさせては如何? ブックとシート、セルと列、データは複数行あるのか否か・・・用語やシート名はハッキリと もう少しこちらで想像できそうな質問文をお願いします。
お礼
Masa2072様 せっかく回答くださったのに、余計混乱させるようなことをして申し訳ありませんでした。 自分の能力不足です。 一文一文確認しながらやってみます。 ありがとうございました。
- higekuman
- ベストアンサー率19% (195/979)
集計という名のシート? "集計シート"という名のシートですよね? 集計という名のシートにあるE1に”成”が入力されたもののうち? E1に"成"が入力されるのは、集計シートではなくて、各企業のシートなんですよね? それとも、集計という名のシートがたくさんある? どれがどのシートなのか、混乱してきました。 #1さんの回答では、 > Sheets("集計シート").Range("B1").Value = Total となっているので、このままでは集計シートのB1に記入されますが、そこはB2に直してあるんですよね? ところで、 > For Each Sh in ThisWorkbook.Worksheets が何をするものなのか、理解していますか? それが解っていれば、ご自分で修正できるはずです。 VBEで[F8]を押すと、命令1行ごとに、ステップ実行できます。 どの命令で、「同じ集計という名のシート上のB2に合計金額が記載された」のかを確認してみるのも良いでしょう。
お礼
higekuman様 お忙しいところ、ご回答ありがとうございました。 higekuman様のおっしゃる内容で間違いありません。 余計混乱させてしまい申し訳なく思っております。 自分の能力不足でした。 一文一文確認しながらやります。 ありがとうございました。
- higekuman
- ベストアンサー率19% (195/979)
#1さんの回答へのお礼に、 > 上の場合、”集計シート”のみの作業になってしまうみたいです。 と書いていますが、そのように判断した根拠を教えてもらえますか?
お礼
大変失礼いたしました。 補足いたします。よろしくお願いいたします。
補足
私の質問の書き方が悪かったと思うのですが、集計という名のシートにあるE1に”成”が入力されたもののうち、同じ集計という名のシート上のB2に合計金額が記載されたんです。 その他のシート(おのおの名前は違います)の串刺しができなかったので、再度ご教示願いました。 大変面倒な質問で申し訳ですが、今一度ご教示をお願いいたします。
お礼
早速のご対応ありがとうございます。感謝いたします。 一点ご質問がございます。 上の場合、”集計シート”のみの作業になってしまうみたいです。 全シートを対象にするには、どうしたらよいでしょうか?