- ベストアンサー
エクセルマクロでワークシート関数のスクリプトに変数を使用する方法について
- エクセルマクロを使用してワークシート関数のスクリプトに変数を入れる方法について説明します。
- R1C1表示では選択したセルを基準にして変数を考える必要があり、考えにくいです。そのため、rangeやcellsを使って書きたいという要望もあります。
- エクセルのセルに入力されている関数をコピーし、変数を手直しして加える方法を教えてほしいという質問です。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ActiveCell.Formula = "=SUM(" & Range(Cells(2, 2), Cells(2, 変数)).Adderss & ")" のような方法で可能です。
その他の回答 (4)
- Zero_0
- ベストアンサー率35% (72/201)
No.4追加です。 J3セルがアクティブになっていて、マクロを実行すると=sum(B3:I3)が入るマクロと考えればいいのでしょうか。 まったく発想を変えて、 Sub Macro1() area = "B3:I3" Cells(10, 3) = "=sum(" & area & ")" End Sub というのはいかがでしょう。cells(10,3)、[B10]のセルにSumの範囲をareaという変数で指定しています。areaの文字列を計算で作成してやればどんな式でも入ります。
- Zero_0
- ベストアンサー率35% (72/201)
質問には、直接関係ないですが、計算式の方法が、R1C1参照形式を使用するという設定になっていませんか。 Excel2003の場合、ツール、オプションの中に全般タグ、R1C1参照形式を使用するのチェックを外すことで、セルをA1,A2・・・のようにすることができます。 この点は、どうでしょうか。
お礼
その点はしっかり分かっています。 ただ、関数の中に変数を入れるときの入れ方がよく理解できていないということです。 お返事ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
質問者は独学でやっているために、便利なスマートなやり方に触れてないだけです。この質問コーナーを1ヶ月間見ておれば、2-3種類のどれも使う方が出てきています。 SUM関数は範囲を引数にしていしますので、セル範囲の正しい書き方であれば、何でも良い。 Sub test01() x = 3 y = WorksheetFunction.Sum(Range("A1:A" & x)) MsgBox y End Sub Sub test02() x = 4 u = 1: V = 5 y = WorksheetFunction.Sum(Range(Cells(u, "A"), Cells(V, "A"))) MsgBox y End Sub ーー >SUM(RC[-8]:RC[-1])"・・・(1) 私らこういう使い方を見向きもしないが、都合悪いことは無かった。 >ActiveCell.Formula みな関数式設定にするのも素人くさい。 一般にやり方のタイプは (1)式設定に持ち込む。Formula= (2)VBAで使える関数式で計算する、処理する z = WorksheetFunction.Sum(Range("A1:A5")) MsgBox z (3)VBAのロジックで行う 例 Sub test03() t = 0 For i = 1 To 10 t = t + Cells(i, "A") Next i MsgBox t End Sub ーー 他の1例 Match関数とFindメソッド利用など (3)のタイプがが奥行きが深いと思う。(2)が簡潔な場合もあるが。
お礼
お返事ありがとうございます。 もう少し勉強が足りなかったみたいです。 これにめげず頑張りたいと思います。 ご指摘の点はまだはっきりと理解できないですが、これを頼りに幅を広げていこうと思います。
- zap35
- ベストアンサー率44% (1383/3079)
こんな方法でも。 Sub Macro1() a = 10 ActiveCell.Formula = "=SUM(A1:A" & a & ")" End Sub Sub Macro2() Cells(1, 1).Value = 10 ActiveCell.Formula = "=SUM(B1:B" & Cells(1, 1).Value & ")" End Sub >実際のエクセルのセルに入力されている関数をそのままコピー Dim wkStr As String wkStr = Range("A10").Formula 'wkStrを加工 Range("B10").Formula = wkStr で変数に格納→加工→別セルに格納になると思いますが具体的ではないので回答できません。
お礼
>ActiveCell.Formula = "=SUM(A1:A" & a & ")" この形式の場合、行ではなくて列が変数になる場合が分からないです。 最後のスクリプトは…、もう少し考えて見ます。 お返事ありがとうございました。
お礼
さっそくのお返事ありがとうございます。 かなり求めていたものに近かったのでありがたいです。