Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4829 / 13644 ツリー ←次へ | 前へ→

【54182】最大値の求め方 多摩川 08/2/28(木) 14:06 質問[未読]
【54184】Re:最大値の求め方 ハチ 08/2/28(木) 14:33 発言[未読]
【54185】Re:最大値の求め方 SS 08/2/28(木) 14:40 発言[未読]
【54186】Re:最大値の求め方 多摩川 08/2/28(木) 15:11 お礼[未読]

【54182】最大値の求め方
質問  多摩川  - 08/2/28(木) 14:06 -

引用なし
パスワード
   b = a * α と数式があります。
a = a + 0.1 と増加させると b の値も変化していきます。
αは複雑な数式であり、a が増加するといって b も増加するとは限りません。(ランダム値)

Do until a > 10
 i = i + 1 'カウント
 a = a + 0.1
 b = a * α
 Redim Preserve x(i): x(i) = a
 Redim Preserve y(i): y(i) = b
Loop

b がある時点で増加から減少に転じるのであれば下記のようにできたのですが・・・
For n = 1 to i - 1
 if y(n) > y(n + 1) Then a = x(n): Exit For
Next

b が増加−減少−増加−減少を繰り返すようなときの b の最大のときの a の値を求めたいのですが
どのようにしたらよいのでしょうか?
宜しくお願い致します。

【54184】Re:最大値の求め方
発言  ハチ  - 08/2/28(木) 14:33 -

引用なし
パスワード
   ▼多摩川 さん:
>b = a * α と数式があります。
>a = a + 0.1 と増加させると b の値も変化していきます。
>αは複雑な数式であり、a が増加するといって b も増加するとは限りません。(ランダム値)
>
>Do until a > 10
> i = i + 1 'カウント
> a = a + 0.1
> b = a * α
> Redim Preserve x(i): x(i) = a
> Redim Preserve y(i): y(i) = b
>Loop
>
>b がある時点で増加から減少に転じるのであれば下記のようにできたのですが・・・
>For n = 1 to i - 1
> if y(n) > y(n + 1) Then a = x(n): Exit For
>Next
>
>b が増加−減少−増加−減少を繰り返すようなときの b の最大のときの a の値を求めたいのですが
>どのようにしたらよいのでしょうか?
>宜しくお願い致します。

このb の値ですが、同じ値になることがあるのでしょうか?
一意の値なら、MAXとMACTHでindex値が求められると思います。
それを a のindexにすれば、できそうな気がします。

試してませんので、間違ってたらゴメンナサイ

【54185】Re:最大値の求め方
発言  SS  - 08/2/28(木) 14:40 -

引用なし
パスワード
   ▼多摩川 さん:

こんにちは、色々方法はあると思いますが
提示されたマクロをいじるとすると
こんな感じで出来るのでは?

>b = a * α と数式があります。
>a = a + 0.1 と増加させると b の値も変化していきます。
>αは複雑な数式であり、a が増加するといって b も増加するとは限りません。(ランダム値)
>
 Dim Bmax 'その時点の最大値
 Dim Amax 'Bmaxに対するa
 Bmax = 0  '初期値は工夫する必要があります。  
>Do until a > 10
> i = i + 1 'カウント
> a = a + 0.1
> b = a * α
 If b > Bmax then
  Bmax = b
  Amax = a
 End If 
> Redim Preserve x(i): x(i) = a '不要
> Redim Preserve y(i): y(i) = b '不要
>Loop
>
>b がある時点で増加から減少に転じるのであれば下記のようにできたのですが・・・
>For n = 1 to i - 1
> if y(n) > y(n + 1) Then a = x(n): Exit For
>Next
>
>b が増加−減少−増加−減少を繰り返すようなときの b の最大のときの a の値を求めたいのですが
>どのようにしたらよいのでしょうか?
>宜しくお願い致します。

【54186】Re:最大値の求め方
お礼  多摩川  - 08/2/28(木) 15:11 -

引用なし
パスワード
   ハチさん、SS さん
回答ありがとうございます。

b は同じ値になることもあり、
その場合は最初の a の値を取得したいと思っていました。

SS さん ご提示の方法で希望通りになりました。

迅速な回答に感謝いたします。
これで仕事が捗ります。
誠にありがとうございました。

4829 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free