[[20050109210843]] 『合計表を数式でなくVBAを使ってできる?』(レイビジョン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『合計表を数式でなくVBAを使ってできる?』(レイビジョン)

[合計表を数式でなくVBAを使ってできるものなんでしょうか]

こんばんは宜しく御願い致します

 下記のような表があります。

	A	B	C	D
1		品A	品B	合計
2	1	10	20	30
3	2	10	20	30
4	3	10	20	30
5	4	10	20	30
6	5	10	20	30
7	6	10	20	30
8	7	10	20	30
9	8	10	20	30
10	9	10	20	30
11	10	10	20	30
12	上旬	100	200	300
13	11	10	20	30
14	12	10	20	30
15	13	10	20	30
16	14	10	20	30
17	15	10	20	30
18	16	10	20	30
19	17	10	20	30
20	18	10	20	30
21	19	10	20	30
22	20	10	20	30
23	中旬	100	200	300
24	21	10	20	30
25	22	10	20	30
26	23	10	20	30
27	24	10	20	30
28	25	10	20	30
29	26	10	20	30
30	27	10	20	30
31	28	10	20	30
32	29	10	20	30
33	30	10	20	30
34	31	10	20	30
35	下旬	110	220	330
36	月計	310	620	930

 上旬、中旬、下旬、月計に縦の合計を自動で表示
 列Dに横の合計が自動に出るように出来るんでしょうか?
 数式を使用すれば問題の無いことなんですが
 どうぞ宜しく御願い致します

 環境はExcel2002、WindowsXPです。(レイビジョン)


 出来ます。
例えば値を入力した直後にそれぞれの合計欄に計算結果が出るようにしたいなら、
シートが持つイベントのWorksheet_Changeにそういった計算を行うVBAを記述する事になるかと思います。

 が、数式を使用した方がとても簡単な内容だと思います。
VBAで行いたいという、その理由は何でしょう。

 もしVBAの習得が目的ならば、
まずはマクロの記録とヘルプをよく読むのが吉。
後はネットで情報を見たり。
(ご近所PG)


ご回答有難うございます

 説明が不足しており申し訳ありません
計算する量が膨大にありそれを対応メディアの関係でFD1枚にしたいんです
圧縮させても画像の部分があり限度がありできなかったので
投稿させていただきました。             (レイビジョン)


 あらかじめ画像を圧縮しておけばよいのでは?

  (INA)

 横からすみません。
 >VBAの習得が目的
 です。
 Private Sub Worksheet_Change(ByVal Target As Range)
 Worksheets("Sheet1").Range("A10").Value = "=sum(a1:a9)"
 End Sub
 としましたら、Private・・・のところが黄色です。
 添削指導をお願いします。(Ty)


 そのコードはどこに入れましたか?
 もしかしたら、複数セルを同時にDeleteしたりコピペしたりしました?
 (川野鮎太郎)

 ありがとうございました。
 >そのコードはどこに入れましたか?
 で、わかりました。
 コードの修正がありませんでしたので、
 コードは間違えてない!と思い、では他の何かの原因だな。と
 シートは
 Sub セル()
 Range("a10").Formula = "=sum(a1:a9)"
 End Sub
 ---
 Private Sub Worksheet_Change(ByVal Target As Range)
 Worksheets("Sheet1").Range("A10").Value = "=sum(a1:a9)"
 End Sub
 となっていて、上のコードを消しましたらOKでした。
 追伸
 A10をDELしても、SUMは有効なことも確認できました。
 数式はDELで消えてしまいますが、マクロでは式が残るんですね。
 今回初めて自力でコードを書くことができました。
 ありがとうございました。(Ty)


 解決したとのことで、以下余談になりますが、
 セルに式のまま入れる場合と、求めた値で入れる場合は多少変わります。
 おそらく後者の場合が、今回のスレ主さんのご質問に当てはまるのかもしれません。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
    Worksheets("Sheet1").Range("B12").Formula = "=SUM(B2:B11)" '式で入力
    Worksheets("Sheet1").Range("B12").Value = Application.Sum(Range("B2:B11")) '値で入力
 End Sub

 (川野鮎太郎)


 回答ありがりがとうございます
Private Sub Worksheet_Change(ByVal Target As Range)
    Worksheets("Sheet1").Range("B12").Value = Application.Sum(Range("B2:B11")) 
 End Sub

 こちらの回答を頂きました。本当に有難うございました
 35になって初めてVBAをやり始めまして
 右も左もわからず悪戦苦闘していますが、このサイトで本当に助かっています
 どうぞ今後とも宜しく御願い致します。        レイビジョン

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.