Excel VBA質問箱 IV

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

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


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

【58034】指定値以下で、最も近い値を出力するマクロ ブル 08/9/28(日) 16:14 質問[未読]
【58035】Re:指定値以下で、最も近い値を出力するマ... Pepper 08/9/28(日) 16:35 回答[未読]
【58036】Re:指定値以下で、最も近い値を出力するマ... ブル 08/9/28(日) 17:54 お礼[未読]
【58037】Re:指定値以下で、最も近い値を出力するマ... Hirofumi 08/9/28(日) 19:06 発言[未読]

【58034】指定値以下で、最も近い値を出力するマク...
質問  ブル  - 08/9/28(日) 16:14 -

引用なし
パスワード
   ユーザー定義関数で、あるシートに入っているデータの中から指定した値以下でなおかつ、最も近い値を出力させる関数を作ろうと思っています。

ロジック的にはシンプルなので、いざ作ってみると、

指定値−対象値 >=0 で指定値以下を抽出する所まではよかったのですが、いざ、指定値以下の値を出してもどうやって指定値以下の数値同士から指定値に近い値を出力したらいいのかお手上げ状態です。

質問を丸々、投げかける状態で申しわけないのですが、この手のマクロを作られた方がいましたら、どうか手助けのほどよろしくお願いします。

【58035】Re:指定値以下で、最も近い値を出力する...
回答  Pepper  - 08/9/28(日) 16:35 -

引用なし
パスワード
   ▼ブル さん:
>指定値−対象値 >=0 で指定値以下を抽出する所まではよかったのですが、いざ、指定値以下の値を出してもどうやって指定値以下の数値同士から指定値に近い値を出力したらいいのかお手上げ状態です。

 指定値との差を保存する変数(仮に dif )と、そのときまでの一番近い値を保存する変数(仮に temp )を作っておき、
 
指定値−対象値 >=0 かつ 指定値−対象値 > dif なら temp=対象値

のような処理をしておけば、データの検査が全部終わったときの temp が求めるものになります。

※処理に入る前に、difの初期値として、あり得ないほど大きな値を設定しておくか、最初に 指定値−対象値 >=0 となったときの差を dif の初期値とする、などとしておけばいいと思います。

【58036】Re:指定値以下で、最も近い値を出力する...
お礼  ブル  - 08/9/28(日) 17:54 -

引用なし
パスワード
   ご回答ありがとうございます。
指摘通りの考え方でプログラムを組んでみたらうまくできました。
どうも、頭が固くて嫌になります。マクロうんぬん外の質問だったみたいで、どうもすいませんでした。 本当に助かりました。

【58037】Re:指定値以下で、最も近い値を出力する...
発言  Hirofumi  - 08/9/28(日) 19:06 -

引用なし
パスワード
   もう見ていないかな?

データが昇順整列されているなら
WorkSheetFunctionのMatchで照合の型を1にすれば使えそうです
また、昇順整列されている配列なら、バイナリーサーチ(2分探索)の
アルゴリズムが使えそうですね

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