1

私はしばらくの間、VBA でゴール シーク関数を実装しようとして苦労してきましたが、結果が得られませんでした。

最後の要素が単なる一時的な設定値であり、配列全体の合計が 1 になるように (ゴールシークのように) 変更する必要がある double-values のバリアントがあります。もちろん、これはまさにあなたがワークシートで行いますが、セルを処理しない VBA で必要です...

ワークシート (またはセル) を使用せずに、代わりに変数を操作するだけで、VBA で Goalseek 関数を呼び出す方法はありますか?

ありがとう、ニクラス

4

1 に答える 1

0

最後の配列項目を埋めるだけの場合は、次のコードが役立つ場合があります。

Sub FillLastElementWithDifferenceToOne()
    Dim arr As Variant
    Dim i As Integer, sum As Double

    ReDim arr(1 To 10)

    'Fill Array with .01 - .09
    For i = LBound(arr) To UBound(arr)
        arr(i) = i / 100
    Next i

    'Calculate sum = .45
    For i = LBound(arr) To UBound(arr) - 1
        sum = sum + arr(i)
    Next i

    'Set last item of array
    arr(UBound(arr)) = 1 - sum

    'Clean up
    Set arr = Nothing
End Sub

それ以外の場合は、VBA で何を達成したいのか、どこに問題があるのか​​を正確に指定し、問題が発生したコードを投稿してください。

于 2013-07-24T09:54:16.140 に答える