- ベストアンサー
最終行を探してSUMするには?
またまたお願いします。 シートT_日計作業にその日の注文データがあります。 金額はC列です。セルC2から始まっていきます。 金額の合計を求めるマクロを書いてますがうまくいきません。 (1) 最終行を求められたのですが、C2から最終行までの 普通、範囲設定でRange("C2:C20").select と書きますよね。 最終行は z = Range("c1").End(xlDown).Rowで求めてあります。 今回の最終行がC20の場合、Z=20 となり 範囲指定は Range("C2:C&Z").Select ???? これがうまくいきません。何か 勘違いしているのでしょか? (2) ActiveCell.FormulaR1C1 = "=SUM(わかりません)" (1)がクリアーしたとして どう書けばよいのでしょうか? 宜しくお願いします。 Sub 日計注文編() Dim z As Long Sheets("T_日計作業").Select '最終行番号を調べる If Range("c2").Value = "" Then z = 1 Else z = Range("c1").End(xlDown).Row End If 'C2から最終行番号までの合計を求める Range("C2:C&Z").Select ActiveCell.FormulaR1C1 = "=SUM(わかりません)" ・・・・
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
どのセルに合計(数式)をセットするのですか? 21行目(最終行の下の行)にセットするなら Range("C" & Z + 1).Select ActiveCell.FormulaR1C1 = "=SUM(C2:C" & Z & ")" ですし、特定のセル(例えばD20[最終行の隣の列])にセットするなら Range("D" & Z).Select ActiveCell.FormulaR1C1 = "=SUM(C2:C" & Z & ")" それと最終行を調べるの Z = 1 は Z = 2 の間違いでは?
その他の回答 (4)
- hallo-2007
- ベストアンサー率41% (888/2115)
No1です 質問勘違いしてました。忘れてください。 お詫びに関数案ひとつ 仮にC20までデータが入っているとして C21に =IF(SUM(C$1:C19)>C20,SUM(C$1:C20),"") 入れて下までフィルしておく。 C21から下にデータ入れるとその下行に合計がでます。
お礼
いえいえ 有難うございます。 また 質問させていただきます。 ご丁寧にありがとうございます。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ここに意味が見えてきませんね。 >If Range("c2").Value = "" Then >z = 1 z = Range("c1").End(xlDown).Row このせいかな? 通常、Zを求める必要はありません。どこまで行っても、同じ式です。(目一杯の行--65536行の一つ手前までです。)数式が既に入っていたら、数式入力は止めるというようなコードですと、こうなります。 Sheets("T_日計作業").Select With Range("C65536").End(xlUp) If .Row > 1 And Not .HasFormula Then .Offset(1).FormulaR1C1 = "=SUM(R2C3:R[-1]C)" End If End With ということですが、この後の作業が、なんとなく、まだ、いくつか手ごわそうな気がしますね。本当に、SUM 関数でよいのかな。シート一つに日計かな? なお、FormulaR1C1 方式で、A1 方式の数式は、まったく意味が変わってしまいますので、使えません。あえて、ローカル(日本)の関数などもありますから、それらを使うなら、FormulaLocal ですが、明示的には、Formula (グローバル方式), FormulaA1 (A1方式) ,FormulaR1C1 方式にしたほうがよいです。
お礼
有難うございます。 >ここに意味が見えてきませんね。 >If Range("c2").Value = "" Then >z = 1 確かにそうですね。 無理に最終行を求めずに 目一杯の65536行ですね。 あなたのご指摘を胸に今一度考えて見ます。 同じ結果になるにも 考え方が色々あるのですね。 勉強になりました。
- merlionXX
- ベストアンサー率48% (1930/4007)
> 範囲指定は Range("C2:C&Z").Select ???? 変数Zが""でくくられているのでただの文字になってます。 ⇒Range("C2:C" & z).Select > ActiveCell.FormulaR1C1 = "=SUM(わかりません)" データ最終行の1行下に式をいれるなら ⇒ Range("C" & z + 1).Formula = "=SUM(C2:C" & z & ")"
- hallo-2007
- ベストアンサー率41% (888/2115)
>シートT_日計作業にその日の注文データがあります。 >金額はC列です。セルC2から始まっていきます。 もし、C列の最終行以下が空白(金額など数値が入っていない) ならば =SUM(C:C) で常に最終行までの合計が出ると思いますが?
お礼
ありがとうございます。
お礼
本当にありがとうございます。 最終行を求めるのに・・・・は Z=2 ですね 。 落ち着かねば・・・・