私は、セルの配列の合計を計算する関数を持っています。この関数は非常に頻繁に別のサブルーチンで呼び出されるため、本当に速くなければなりません。まず、for-loopを使って数字を取得しましたが、遅すぎました。それからワークシート機能を使いたかったのですが、これは未知の理由では機能しません。関数のコードは次のとおりです。excel vba worksheetfunction.sum
この結果を得るには、より良い/より速い方法がありますか?
私は、セルの配列の合計を計算する関数を持っています。この関数は非常に頻繁に別のサブルーチンで呼び出されるため、本当に速くなければなりません。まず、for-loopを使って数字を取得しましたが、遅すぎました。それからワークシート機能を使いたかったのですが、これは未知の理由では機能しません。関数のコードは次のとおりです。excel vba worksheetfunction.sum
この結果を得るには、より良い/より速い方法がありますか?
ここで試してみてください。最も難しい部分は、合計したい最後の行を見つけることです。この最初の試みがあなたのケースを解決しない場合は、これが私たちが作業すべき場所だと思います。
Function CalcMD(rownumbers, colnumber)
Dim MMDRow As Integer, iMaxRow As Integer
Dim SearchRange As String
MMDRow = MMDRow()
'Find the last row where you want to sum the data
iMaxRow = WorksheetFunction.Min(MMDRow - 1, WorksheetFunction.Max(rownumbers))
CalcMD = WorksheetFunction.Sum(Cells(iMaxRow, colnumber))
End Function
もJMAXのアプローチを使用して、ここでチェックし、多くのエラー(特に入力データをチェックする)
こんにちは、私はあなたのコードを試して、あなたは合計があるセルを見つけることを試みているので、動作しません。私はこの細胞を探したくありません。最後の行の数式がそれに応じて更新されない可能性があるため、実際には合計が何であるかをrowarrayで計算したいと思います。私はすべての行を繰り返し、すべての値を追加し、合計を取得する必要があります。 – user366121
私は良いアイデアがあると思います。私は差を計算し、関数を一度呼び出してから差がゼロになるまでします。 – user366121
が存在しないことに注意してください。
Function CalcMD(rownumbers, colnumber)
Dim MMDRow As Integer, iMaxRow As Integer
Dim SearchRange As String
MMDRow = MMDRow()
'Find the last row where you want to sum the data
iMaxRow = WorksheetFunction.Min(MMDRow - 1, WorksheetFunction.Max(rownumbers))
CalcMD = WorksheetFunction.SumIF(Cells(iMaxRow, colnumber),">0")
End Function
は、あなたが探しているものということですか?
'MMDRow()'とは何ですか?スクリーンショットや、あなたが達成したいと思っているものの実例を見てみると便利でしょう:) – brettdj
私は、セルに特定の名前があるすべての丸数字の配列を取得します。しかし、これは他の行の合計のためのセルを含んでいるので、私はこの名前が最後の行を必要としません。この関数は、毎月の列の人日の合計を計算します。この値が最大許容値を超えている場合は、この列の値を小さくする必要があります。すべての減少の後、私は合計が最大許容値に等しいかどうかをチェックする関数を呼び出します。したがって、それは本当に速くなければなりません。私はこれが役立つことを願っています – user366121
MMDRow()は、合計を超える行を取得する別の関数です。 – user366121