お世話になります。
マクロ側のソルバー機能を利用して係数を推定しようと考えています。
係数の置き場所はワークシートです。計算値、実測値も同様です。
ただし、ワークシートに打ち出す計算値は外部dllで行います。
コードの概要は以下の通りです。
sub cal
call 外部dll
end
sub optsolver
For i = 1 To 100
Call cal
SolverOk SetCell:="E18", MaxMinVal:=2, ValueOf:="0", ByChange:="D3:D4"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
Next i
end
1回目のステップではワークシート上に計算値が得られるのですが、
2回目以降はセルの値(係数や計算値)が更新されませんし、結果として係数も推定できません。
100回くらい画面がちらついて、終わりの表示もなく終わります。
ここでいう係数と計算値は連動していないとソルバーは使えないと
どこかで聞いたことがあるのですが、このためでしょうか。
(連動って、設定の数値を変えれば自動で追随することだろうとおもいます。)
使用環境は
winxp pro sp2
excel 2003
です。
No.1ベストアンサー
- 回答日時:
状況が今ひとつはっきりわからないのですが、推定すると以下のようなことでしょうか?
・係数を求めたい。よってこれを変化させるセル(D3:D4)に割り当てた。
・計算値を実測値に近付けたいので、目的セル(E18)には計算値(あるいは計算値と実測値の近さを表す数値)が計算されるようになっている。
・計算値は外部dllを用いて係数から算出する。そのため、係数(変化させるセル、D3:D4)を変更しただけでは目的セル(E18)の値は更新されない。そこで、外部dll呼び出しとソルバーを交互に繰り返し実行する質問文中のコードを書いて実行してみたがうまくいかない。
もしそうであれば、そのとおりうまくいきません。
質問者様も書かれている通り、ソルバーが正常に動作するには「ここでいう係数と計算値が連動している」必要があり、そういう状態にできないのであれば値の計算とソルバーを交互に行ってもうまくいきません。
(連動の意味も質問者様の理解で合っていると思います)
部外者の立場としては、外部dllでの計算をワークシートの数式で実現できないのか、と聞きたくなりますがおそらくだめなのでしょうね。
現実的な解決策ですが、ユーザー定義関数を作り、その中で外部dllを呼び出すようにし、ワークシートの数式にそのユーザー定義関数を用いて化させるセル(D3:D4)から目的セル(E18)を算出するようにしてはいかがでしょうか。
(もちろん、外部dllの呼び出しとソルバーの交互繰り返し実行はやめます)
この回答への補足
queuerev2様が上3分の1くらいで述べられたことは、まさにその通りです。
>質問者様も書かれている通り、ソルバーが正常に動作するには「ここでいう係数と
>計算値が連動している」必要があり、そういう状態にできないのであれば値の計算
>とソルバーを交互に行ってもうまくいきません。
きっと評価関数が動けないと困るんでしょうね。
>部外者の立場としては、外部dllでの計算をワークシートの数式で実現できないのか、
>と聞きたくなりますがおそらくだめなのでしょうね。
おっしゃるとおりで、外部DLLは外せないですね。実はこの質問の意図は、エクセルのソルバーだけを利用したい、です。ですので、肝心の計算の中身はワークシートやマクロに記述せず外部DLLに集約させています。もちろんy=ax+bとかの簡易なモデル式ならばワークシートに直打ちした方が楽です。しかし、簡易でないときは面倒ですし、なによりもモデル記述の可能性を狭めてしまいますよね。これもまたエクセルの利用法の一つだと思うのです。
結論から言うと、完成しました!
私はqueuerev2様の回答で、世界が広がりました。結構悩んでいたので。
初めての投稿で返信がいただけるかどうか不安だったのですが、回答をいただける方に出会えたことを嬉しく思います。感謝です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
【お題】逆襲の桃太郎
【大喜利】桃太郎が1回鬼退治に失敗したところから始まる新作昔話「リベンジオブ桃太郎」にはこんなシーンがある
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
エクセルのソルバー関数について!
Excel(エクセル)
-
Excel のユーザー定義関数でソルバーが動作しない
Visual Basic(VBA)
-
℃の半角表示
Excel(エクセル)
-
-
4
オペアンプのGB積
その他(教育・科学・学問)
-
5
ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
傾いた四角形内の範囲の条件式
-
0xf0=256?
-
matlabで計算終了
-
エクセルで特定のセルのみを任...
-
Excel VBAにてFFT
-
趣味で「乗換案内」みたいなソ...
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
R言語での極小値の指数形式での...
-
CとFORTRANの計算速度はどちら...
-
数十万番目の素数を表示させる...
-
「評価」「評価値」という言葉...
-
数値計算の高速化 (cos, sin, exp)
-
Bluestacks内でダウンロードし...
-
【JAVA】数字をひし形に出力す...
-
正しい五十音順について
-
四次方程式をC言語を用い解きた...
-
Excelで4096点以上のFFTの方法
-
変数の値が勝手に変化する原因
-
バッチファイルでUSB挿入時に実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語についてです。 再帰を使...
-
バッチファイルでウインドウを...
-
数値計算の高速化 (cos, sin, exp)
-
CとFORTRANの計算速度はどちら...
-
モジュロ
-
matlabで計算終了
-
エクセルで特定のセルのみを任...
-
モジュラス103の計算とは何でし...
-
VBAで関数をつくる
-
Visual C++でdebugとreleaseで...
-
計算量の少ないn乗根の求め方
-
引き放し法による除算アルゴリ...
-
VBでReplace
-
プログラムの質問
-
傾いた四角形内の範囲の条件式
おすすめ情報