dポイントプレゼントキャンペーン実施中!

D99のセルから1週間毎にデータが7列分(8列の場合もある)右に増えていき、その最後列のセルを選択し、その2行下、1列左のセル(i)から固定のC101までの合計値をマクロで算出したいと考えております。

Sum(Range("C10:i"))の部分が悪いことはわかっているのですが、どのようにしたらいいのかわかりません。
iを行数や列数の変数としてではなく、選択されているセル(セル内の数値)として計算式に入れたいです。
お手数ですが、教えていただければ幸いです。


Range("D99").Select
Selection.End(xlToRight).Select
Dim i
Set i = ActiveCell.Offset(2, -1)
Range("A1").Value = Application.WorksheetFunction.Sum(Range("C101:i"))

A 回答 (3件)

>簡単でいいので、少し解説して頂けないでしょうか。



Dim i As Range は、セルの参照を保管する事を明示しています。

A1セルを選択したとして、
i.Address(False,False) → A1 の文字が返ってきます。
因みに、i.Address → $A$1 と絶対参照で返ってきます。
"C101:" &  と する事で、C101:A1 の様なセルの範囲を返します。

Range(Range("C101"),i) → Range(Range("C101"),Range(”A1”))と
対角のセルを参照する事で、その範囲を選んだ事になります。
結果としては、1つ上と同じ事になります。


>SUMの式のセルには計算式は入らないんですね。

Application.WorksheetFunction.Sum は、マクロ上で、その数式を
使う物になります。 主に結果を取得する時に使います。

マクロの記録という便利な機能があるので、それを使った状態で、
セルに計算式を入れて、マクロを参照されると分かるかと思います。
https://excel-ubara.com/excelvba1/EXCELVBA303.html
    • good
    • 1
この回答へのお礼

ご丁寧に回答ありがとうございます。
少しわかった気がします。
自分で調べて理解したいと思います。

お礼日時:2021/12/28 10:48

マクロの記録だと、うまく記録されない可能性もあるので、モーグを


紹介しておきます。 そこで勉強されると良いかと思います。

セルに数式を入力/取得する(Formula/FormulaR1C1プロパティ)

https://www.moug.net/tech/exvba/0050098.html
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
確認してみます。

お礼日時:2021/12/28 10:44

こんばんは。



Dim i As Range

.Sum(Range("C101:" & i.Address(False,False)))

又は、

.Sum(Range(Range("C101"),i)

で、どうでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
助かりました。
簡単でいいので、少し解説して頂けないでしょうか。
お願いいたします。
また、SUMの式のセルには計算式は入らないんですね。

お礼日時:2021/12/28 00:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!