web-dev-qa-db-ja.com

VBAの合計関数

Vbaのセルの合計に問題があります。 Cells(a、b)を使用する必要があります:

Range("A1").function="=SUM(Range(Cells(2,1),Cells(3,2)))"

しかし、それは機能しません。

9
haver24

関数は範囲のプロパティ/メソッドではありません。

値を合計する場合は、次を使用します。

Range("A1").Value = Application.Sum(Range(Cells(2, 1), Cells(3, 2)))

編集:

数式が必要な場合は、次のように使用します。

Range("A1").Formula = "=SUM(" & Range(Cells(2, 1), Cells(3, 2)).Address(False, False) & ")"

'The two false after Adress is to define the address as relative (A2:B3).
'If you omit the parenthesis clause or write True instead, you can set the address
'as absolute ($A$2:$B$3).

常に同じ範囲アドレスを使用する場合は、Roryが想定どおりに使用できます。

Range("A1").Formula ="=Sum(A2:B3)"
32
CaBieberach

関数valueをセルに配置

Application.Sumは、私の経験ではうまく機能しないことがよくあります(または、少なくともVBA開発者環境は何らかの理由で気に入らないでしょう)。

私に最適な関数はExcel.WorksheetFunction.Sum()です

例:

Dim Report As Worksheet 'Set up your new worksheet variable.
Set Report = Excel.ActiveSheet 'Assign the active sheet to the variable.

Report.Cells(11, 1).Value = Excel.WorksheetFunction.Sum(Report.Range("A1:A10")) 'Add the function result.

関数をセルに直接配置します

あなたが探していた他の方法は、関数をセルに直接配置することです。これは、セル値にファンクション文字列を入力することで実行できます。以下は、セル値に関数の結果ではなく関数が与えられることを除いて、上記と同じ結果を提供する例です。

    Dim Report As Worksheet 'Set up your new worksheet variable.
    Set Report = Excel.ActiveSheet 'Assign the active sheet to the variable.

    Report.Cells(11, 1).Value = "=Sum(A1:A10)" 'Add the function.
8
Lopsided
Range("A1").Function="=SUM(Range(Cells(2,1),Cells(3,2)))"

ワークシート関数(実際にワークシートで使用される場合)はRangeまたはCellを理解しないため、機能しません。

試して

Range("A1").Formula="=SUM(" & Range(Cells(2,1),Cells(3,2)).Address(False,False) & ")"
3
Tim Williams
_Range("A10") = WorksheetFunction.Sum(Worksheets("Sheet1").Range("A1", "A9"))
_

どこ

Range("A10")は回答セルです

Range("A1", "A9")は計算する範囲です

1
Mohamed Khairt