
No.3
- 回答日時:
A2に
=A1^4-2*A1^3+5*A1-10
と入力します。
ツール―ソルバー
で、
目的セル:$A$2
目標値:最小値
変化させるセル:$A$1
制約条件:$A$1<=100,$A$1>=1,$A$1=整数
として、実行します。
これをマクロ記録で、もう一度実行します。
このマクロをユーザー設定でボタンに登録します。
なお、VBEでツール―参照設定でSOLVERにチェックを入れておきます。
これで、登録ボタンを押すと、$A$2に最小値が表示されます。
No.2
- 回答日時:
最小値を求めるアルゴリズムというものがあって、情報技術者の試験問題の解説書などに出てくるぐらい常識のもの。
B列の値を求める式など特に質問に持ち出さなくて良い。VBAをやるなら、エクセルVBAのメソッドやプロパティを覚えるほかに、基礎的なアルゴリズムを知ることが必要。
まず起こり得なさそうな数を初期値として(最小値候補値)変数にセット。前にも書いたが、椅子が1つあって、100人が配られた自分の持っている「1枚の数の書かれたカード」をじゃんけんの代わりに見せ合い、小さい方のカードを持っていたものがその椅子に座る(か座り続ける)。
これで全員の、数による「じゃんけん」が終わったら、最後に椅子に残った者のカードに書かれた数が最小値。
最小値・最大値は最後のレコード読むまで決らない。すなわち1回は絶対に全データを読む必要がある。ですから上記より能率的なアルゴリズムは無いだろう。
推測ではMIN関数の内部処理も、言語は別でも、処理ロジック・方法はこれを使っているのではないかな。
ーー
Sub test01()
m = 10000 '起こりえない大きい数
d = Range("A65536").End(xlUp).Row
For i = 1 To d
x = Cells(i, "A")
y = x
'y = f(x)
If m > y Then
m = y
End If
Next i
MsgBox m
End Sub
質問の場合では'y = f(x)のところで関数で式で計算に置き換える。
>m = 10000 '起こりえない大きい数
を設置するのは、第1データから同じパターンの処理をするため。
エクセルなら、m=Cells(1,"A")としても良い。本質問なら第1(行)データにより計算した関数式による計算値をセットする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】並び替えの範囲が、...
-
vbsでのwebフォームへの入力制限?
-
算術演算子「¥」の意味について
-
VBA ユーザーフォーム ボタンク...
-
Vba Array関数について教えてく...
-
Excelのマクロについて教えてく...
-
VB.net 文字列から日付型へ変更...
-
Vba 型が一致しません(エラー1...
-
vba textboxへの入力について教...
-
VBAの「To」という語句について
-
以下のプログラムの実行結果は...
-
VBA 入力箇所指定方法
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
エクセルの改行について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCOPYを繰り返すと、処理が...
-
複数のExcelファイルをマージす...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
vba textboxへの入力について教...
-
Vba セルの4辺について罫線が有...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
【ExcelVBA】値を変更しながら...
-
【マクロ】開いているブックの...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
VBA 入力箇所指定方法
-
[VB.net] ボタン(Flat)のEnable...
-
VBAでセルの書式を変えずに文字...
-
vb.net(vs2022)のtextboxのデザ...
-
Excelのマクロについて教えてく...
-
改行文字「vbCrLf」とは
おすすめ情報