1

合計や平均など、数値の列の下に数式を配置するマクロを作成しようとしています。私はこれを思いついた:

Sub foo()
    ActiveSheet.Range(ActiveCell, ActiveCell.End(xlDown)).Select
    ActiveCell.End(xlDown).Offset(1) = Application.WorksheetFunction.Sum(Selection)
End Sub

この関数は合計を見つけ、一番上を選択したデータの列の最後の数字の下に配置します。それは機能しますが、動的ではありません。新しい値は単なる値です。列の数値の1つを変更しても、合計を保持するセルは変更されません。だから私はセルに実際の機能を配置しようとしています。これは私が現在持っているものです:

Sub foo()
    ActiveCell.Offset(1).Formula = "=Sum(ActiveCell:ActiveCell.End(xlUp))"
End Sub

今回は一番下から始めました。現在、アクティブ セルは列の最後の値になるように意図されています。エラーは検出されませんが、出力は「#NAME」と悪いです。引用符で遊んでみましたが、何も得られませんでした。例えば:

Sub foo()
    ActiveCell.Offset(1).Formula = "=Sum(" & ActiveCell:ActiveCell.End(xlUp) & ")"
End Sub

何か案は?

4

3 に答える 3

1

検討:

Sub dural()
    Dim s As String
    s = Range(ActiveCell, ActiveCell.End(xlDown)).Address
    ActiveCell.End(xlDown).Offset(1, 0).Formula = "=SUM(" & s & ")"
End Sub
于 2013-06-19T18:07:32.760 に答える
1

ゲイリーの学生の答えは非常に近いですが、完全ではありません。これは私が最終的に得たものです:

Sub foo()
    Dim s As String
    s = Range(ActiveCell, ActiveCell.End(xlUp)).Address(0,0)
    ActiveCell.Offset(1).Formula = "=SUM(" & s & ")"
End Sub

データの列の最後のセルを選択すると、合計式がそのすぐ下に配置され、その動的な結果としてデータを自由に変更できます。

編集:(0,0)アドレスに追加されたため、動的になりました。

于 2013-06-19T19:23:48.967 に答える