- 締切済み
エクセル(EXECL)複数の条件を満たす最小の数値を自動的に計算する式は?
以下のように数値・式が入力されているとします。 「A1」はブランク 「B1」に「7」 「C1」に「=A1+B1」 「D1」に「15.3」 ここで、「A1」に C1>D1 且つ Aは5の倍数 の条件を満たす数値の中で最小のもの(上記入力の場合、答えは 「10」)が自動的に計算されて表示されるようにしたいのですが、 その場合どのような方法がありますでしょうか? エクセルに長けた方、どうぞお教えください。 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- tetumaru_1
- ベストアンサー率0% (0/6)
B1の数値がマイナスの場合間違えていました。 修正します。 A1=IF(B1<0,ROUNDUP(D1/5,0)*5-ROUNDUP(B1/5,0)*5-5,ROUNDUP(D1/5,0)*5-ROUNDUP(B1/5,0)*5) これで全てOKとなります。
- MackyNo1
- ベストアンサー率53% (1521/2850)
No1で関数ではできないと回答しましたが、No3のgrumpy_the_dwarfさんの回答のように、微小値による繰り上げテクニックが必要ですが、このケースでは条件がが比較的簡単なため数式だけで計算できますね。 今回は数式だけで対応できそうですが、ソルバーなどの機能は、複雑な条件で試行錯誤型の値を検索する場合は有効な手段ですので、条件が複雑になったような場合は利用価値があると思います。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
C1>D1ということは、A1>D1-B1ですね。だったらA1は =ceiling(D1-B1+10e-12,5) です。=ceiling(D1-B1,5)だとD1=17のときにA1=10になってしまって 条件を満たさないので、実用上問題にならないくらい微小に加算し てごまかしてあります。
- tetumaru_1
- ベストアンサー率0% (0/6)
A1=ROUNDUP(D1/5,0)*5-ROUNDUP(B1/5,0)*5 これだけでいいと思います。
- MackyNo1
- ベストアンサー率53% (1521/2850)
今回のご質問は、数式内に自分自身のセルを参照するような数式になりますので、循環参照となるため基本的に数式で対処できません。 このようなケースでは、一般的にゴールシークやソルバーの機能を利用します。 今回のケースなら、C1セルに「=5*A1+B1-D1」と入力しておき、このセルが正の最小値になるようなA1の値を求めることになります。 バージョンが書かれていませんのでExcel2003で説明すると、「ツール」「ソルバー」で目的セルは「C1」、目標値は「最小値」、変化させるセルは「A1」、制約条件は、追加ボタンを押して、左に「A1」、まん中の選択肢は「区間」を選択し「整数」にし、さらに「追加」をクリックし、「C1」が「>=」「0」と設定します。 これでOKすると該当するデータがA1セルに表示されます。 ソルバーを利用するには「ツール」「アドイン」で「ソルバー」にチェックを入れる必要があるかもしれません。
お礼
ありがとうございました。 これは大変残念ながら循環参照が出るようです。 でも、勉強になりました。他のところで参考にさせていただきます。
補足
質問主です。ごめんなさい。循環参照はでないですね。お詫びの上、上記取り消しさせていただきます。