[[20160708170538]] 『最終行に合計を』(QPちゃん) ページの最後に飛ぶ

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

 

『最終行に合計を』(QPちゃん)

いつもお世話になっております。

F6から最終行までの数字を足して、その合計を最終行の一つ下へ表示させたいです。
それをF列以降も同じことを繰り返して最終行の一つ下の行へ表示させたいです。
その最終行というのはA列の最終行を参照したいです。

例えばA列の最終行が58の時、
F列59 G列59 と、各列の合計を表示させたいです。

宜しくおねがいします。

     |[A]|[B]     |[C]      |[D]|[E]|[F]|[G]|[H]|[I]|[J]|[K]|[L]|[M]|[N]|[O]|[P]|[Q]|[R]
 [4] |   |        |         |   |   |[1]|[2]|[3]|[4]|[5]|[6]|[7]|[8]|[9]|10]|11]|12]|13]
 [5] |   |最大個数|MODEL    |Qty|   |   |   |   |   |   |   |   |   |   |   |   |   |   
 [6] |   |     120|    74507| 64|   | 64|   |   |   |   |   |   |   |   |   |   |   |   
 [7] |   |     160|    74704| 28|   | 28|   |   |   |   |   |   |   |   |   |   |   |   
 [8] |   |      80|701020000| 47|   | 23| 24|   |   |   |   |   |   |   |   |   |   |   
 [9] |   |     160|    74704| 23|   |   | 23|   |   |   |   |   |   |   |   |   |   |   
 [10]|   |     160|    74704| 36|   |   | 36|   |   |   |   |   |   |   |   |   |   |   
 [11]|   |      80|701020000|437|   |   | 26| 80| 80| 80| 80| 80| 11|   |   |   |   |   
 [12]|   |      80|701020000| 80|   |   |   |   |   |   |   |   | 69| 11|   |   |   |   
 [13]|   |      80|701020000| 99|   |   |   |   |   |   |   |   |   | 69| 30|   |   |   
 [14]|   |      80|701020000| 56|   |   |   |   |   |   |   |   |   |   | 50|  6|   |   
 [15]|   |     120|    74507|100|   |   |   |   |   |   |   |   |   |   |   |100|   |   
 [16]|   |      80|701020000| 65|   |   |   |   |   |   |   |   |   |   |   |  7| 58|   
 [17]|   |     120|    74507| 10|   |   |   |   |   |   |   |   |   |   |   |   | 10|   
 [18]|   |      80|701020000| 10|   |   |   |   |   |   |   |   |   |   |   |   | 10|   
 [19]|   |     120|    74507| 28|   |   |   |   |   |   |   |   |   |   |   |   |  8| 20
 [20]|   |     120|    74507| 16|   |   |   |   |   |   |   |   |   |   |   |   |   | 16
 [21]|   |     120|    74507| 18|   |   |   |   |   |   |   |   |   |   |   |   |   | 18

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 A列は空白列では? 最大行は B列で把握しました。

 Sub Test()
    Dim mc As Long
    mc = Cells(4, Columns.Count).End(xlToLeft).Column
    Range("B" & Rows.Count).End(xlUp).Offset(1).EntireRow.Range("F1").Resize(, mc - 5).FormulaR1C1 = "=SUM(R6C:R[-1]C)"

 End Sub

(β) 2016/07/08(金) 17:51


 こんばんわ。

[[20160519153851]]のコードに追加ですね。

 Next i の下に以下のコードを追加してみて下さい。

    sh1.Range("B" & i).Value = "合計"
    sh1.Range(sh1.Cells(i, "F"), sh1.Cells(i, j)).FormulaR1C1 = "=SUM(R6C:R[-1]C)"

 合計の文字を表示させるのはB列でなくても構いませんが、C列に表示させると次回のマクロ実行時に行数が合わなくなりエラーになります。

(sy) 2016/07/08(金) 19:26


別案ですが、全体的に1行下に下げて、数値の上(6行目)に合計行を挿入してはいかがでしょうか?
これならば、データ数に関係なく、計算式を固定で埋められると思いますよ。

可変データを表にする場合、大抵は一番上、一番左に合計欄を用意すると簡単になります。
合計値をグラフ化する、なんてときに、参照場所が変わらないというメリットがあるのです。
(???) 2016/07/08(金) 19:49


(β)さま、

こんにちわ。
おっしゃる通りA列は空欄でした。

ありがとうございます。
(QPちゃん) 2016/07/11(月) 15:10


(sy)さま、

ありがとうございます。

最終行の1つ下に各列の合計が入力されました。感謝です。

(???)さまが提案してくれた事に対して
「ふむふむ。確かに上に合計欄を設けるほうがいいのかもしれないなぁ」と、思ったので
3行目に合計を入れるとするならどのような記述になりますでしょうか?

宜しくおねがいします。
(QPちゃん) 2016/07/11(月) 15:20


(???)さま、

提案、ありがとうございます。
(QPちゃん) 2016/07/11(月) 15:23


 こんにちわ。

 3行目に合計欄を追加するなら、iを3に変えれば3行目に追加されます。
 式の方は、入力欄が最大入力数が決まっているなら一番下の行までで良いです。
 下のような感じです。
 "=SUM(F6:F21)"
 21を想定される入力の最大の行にすれば良いです。
 最大行数が不確定で決めにくいなら
 "=SUM(F6:F" & i - 1 & ")"
 として下さい。

 ただ3行目なら最大行数が決まってるなら、マクロで都度セットしなくても、
 予め列に余裕を持って関数を埋め込んでいても良いんじゃないでしょうか。

(sy) 2016/07/11(月) 15:56


 すいません。

 やっぱPC前に居ないとスマホじゃ見落としがある。

 FormulaR1C1 は Formula に変えて下さい。

(sy) 2016/07/11(月) 16:03


F列のF7から最終行まで合計します。

=SUM(F7:INDIRECT("F" & MAX(INDEX((F:F<>"")*ROW(F:F),0)) ))

MAX(INDEX((F:F<>"")*ROW(F:F),0)) が最終行です。
(NTS) 2016/07/11(月) 16:04


 こんばんわ。

 3行目に合計をセットするように修正したら、以下のようになります。

    sh1.Range("F3", sh1.Cells(3, j)).Formula = "=SUM(F6:F" & i - 1 & ")"

(sy) 2016/07/11(月) 23:16


コメント返信:

[ 一覧(最新更新順) ]


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