web-dev-qa-db-ja.com

Excelでゴールシーク式を自動化する方法はありますか?

次の式を使用する必要があります。

= POWER(b、(d + 1))-N *(b-1)-1

Bを見つける必要があるので、これを実行するたびに、dとNの値を選択する必要があります。次に、ゴールシークでbを計算値にします。問題は、bを計算するためのエントリが約1500あることです。計算を自動化する方法はありますか?より単純な関数の入力値をドラッグする方法のように?

3

First、最後の「1」は「b」である必要があります。

Second、1は常にこの方程式を解くので、ゴールシークは実際にはあまりうまく機能しないことがわかりました(「b」をサブする場合)。これは、値の最小値を制約する方法がないため、ゴールシークが実際にそれを解決しないことを意味しますが、ゴールシーカーを自動化するだけの場合は、 この高価なアドイン があります。

3番目、ゴールシークを実行するVBAの方法は

Sheets( "Sheet1")。Range( "A1")。GoalSeekゴール:= 0、ChangingCell:= Sheets( "Sheet1")。Range( "B1")

ここで、「A1」は数式を含むセルであり、「B1」は「b」値で終わる空のセルです。したがって、そのループを作成して、そのように自動化することができます。

4番目、最良の方法はVBAでソルバーを使用することです。ソルバーアドインを有効にしてから、VBAでソルバー参照を有効にします。例として次のコードを使用します。ここで、D列には式があり、C列は「b」が終わる場所であり、$ H $ 1は値2であるため、b = 1で解決されません。

Public Sub SolveGeometric()

Dim i As Integer

    For i = 2 To 3
        SolverReset
        SolverOk SetCell:="$D$" & i, MaxMinVal:=3, ValueOf:="0", _
            ByChange:="$C$" & i
        SolverAdd CellRef:="$C$" & i, Relation:=4  'keep it an integer
        SolverAdd CellRef:="$C$" & i, Relation:=3, FormulaText:="$H$1"
        ' $H$1 = 2, so that it won't find 1 which always solves the equation
        SolverSolve userFinish:=True
    Next i

End Sub
2
Lance Roberts

解こうとしている式を確認できるように、「等比数列」とは何かを調べることをお勧めします。

問題の解決に対処するために頭に浮かぶ(そして効果的に機能する場合と機能しない場合がある)1つのアイデアは、Excelの「ソルバー」アドインを使用することです。 N、d、および初期bの値の列があります。 1つは計算されたN値用で、もう1つは計算されたN値と目的のN値の差の2乗用です。

N値の差の二乗を合計し、ソルバーを使用して、b値の列のセルを変更して値を0に設定します。

0
Neal