- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変化させるセルが変化しない)
変化させるセルが変化しない
このQ&Aのポイント
- マクロを使用してセルの値を変化させる方法について悩んでいます。特に、ソルバーを使用して係数を推定する際に問題が発生しています。
- ソルバーを利用して係数を推定するために、ワークシートを使用して値を計算していますが、2回目以降の計算ではセルの値が更新されず、結果として係数を推定することができません。
- 連動という概念についても疑問があります。連動は、設定した値に応じて自動的に追随することを指すのでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
状況が今ひとつはっきりわからないのですが、推定すると以下のようなことでしょうか? ・係数を求めたい。よってこれを変化させるセル(D3:D4)に割り当てた。 ・計算値を実測値に近付けたいので、目的セル(E18)には計算値(あるいは計算値と実測値の近さを表す数値)が計算されるようになっている。 ・計算値は外部dllを用いて係数から算出する。そのため、係数(変化させるセル、D3:D4)を変更しただけでは目的セル(E18)の値は更新されない。そこで、外部dll呼び出しとソルバーを交互に繰り返し実行する質問文中のコードを書いて実行してみたがうまくいかない。 もしそうであれば、そのとおりうまくいきません。 質問者様も書かれている通り、ソルバーが正常に動作するには「ここでいう係数と計算値が連動している」必要があり、そういう状態にできないのであれば値の計算とソルバーを交互に行ってもうまくいきません。 (連動の意味も質問者様の理解で合っていると思います) 部外者の立場としては、外部dllでの計算をワークシートの数式で実現できないのか、と聞きたくなりますがおそらくだめなのでしょうね。 現実的な解決策ですが、ユーザー定義関数を作り、その中で外部dllを呼び出すようにし、ワークシートの数式にそのユーザー定義関数を用いて化させるセル(D3:D4)から目的セル(E18)を算出するようにしてはいかがでしょうか。 (もちろん、外部dllの呼び出しとソルバーの交互繰り返し実行はやめます)
お礼
結論から言うと、完成しました! 私はqueuerev2様の回答で、世界が広がりました。結構悩んでいたので。 初めての投稿で返信がいただけるかどうか不安だったのですが、回答をいただける方に出会えたことを嬉しく思います。感謝です。
補足
queuerev2様が上3分の1くらいで述べられたことは、まさにその通りです。 >質問者様も書かれている通り、ソルバーが正常に動作するには「ここでいう係数と >計算値が連動している」必要があり、そういう状態にできないのであれば値の計算 >とソルバーを交互に行ってもうまくいきません。 きっと評価関数が動けないと困るんでしょうね。 >部外者の立場としては、外部dllでの計算をワークシートの数式で実現できないのか、 >と聞きたくなりますがおそらくだめなのでしょうね。 おっしゃるとおりで、外部DLLは外せないですね。実はこの質問の意図は、エクセルのソルバーだけを利用したい、です。ですので、肝心の計算の中身はワークシートやマクロに記述せず外部DLLに集約させています。もちろんy=ax+bとかの簡易なモデル式ならばワークシートに直打ちした方が楽です。しかし、簡易でないときは面倒ですし、なによりもモデル記述の可能性を狭めてしまいますよね。これもまたエクセルの利用法の一つだと思うのです。