
以下の条件を計算式で打ち出す事は可能でしょうか?
50を入力したときに別のセルに1.50が出る
100を入力したときに別のセルに1.50が出る(100以下の数値入力時は全て1.50)
200を入力したときに別のセルに2.30が出る(₊0.8)
300を入力したときに別のセルに3.00が出る(₊0.7)
400を入力したときに別のセルに3.60が出る(₊0.6)
500を入力したときに別のセルに4.10が出る(₊0.5)
600を入力したときに別のセルに4.50が出る(₊0.4)
700を入力したときに別のセルに4.80が出る(₊0.3)
800を入力したときに別のセルに5.0が出る(₊0.2)
900を入力したときに別のセルに5.1が出る(₊0.1)
1000を入力したときに別のセルに5.1が出る(900以上の数値入力時は全て5.1)
上記以外の数字を入力した場合は、ちょうどその間の数字が出る
例:150という値を入力したときには別のセルに1.90が出る
例:220という値を入力したときには別のセルに2.44が出る
という様なものです。
非常に分かりづらく拙い説明で恐縮ですが、ご教授頂けますと幸いです。
No.3ベストアンサー
- 回答日時:
こんばんは
100以下と、900以上は一定値で、100~900の間は補間して値を求めたいということと解釈しました。
ご提示の値の変化率が1次関数なので、2次曲線の解を求めて補間すれば簡単な数式にできるので簡単です。
ただし、曲線補間になるので、ご提示の直線補間とは少し異なる値になってしまいます。
(100、200、300・・の場合の値は、ぴったりと一致しますけれど・・)
こちらの方法の方が、グラフ的にはもっともらしい考え方だとは思いますけれど・・
(こちらであればなめらかな曲線グラフ。ご提示の方法だと折れ線グラフ)
ちなみに、その場合は
150の場合の値は 1.9125
220の場合の値は 2.448
となります。
二次式の解は、
Y=-5E-6*X*X+95E-4*X+0.6
といった感じです。
どうしても折れ線グラフ的に補間を行いたければ、No1様の回答のような表を作成しておいて、どの値の間に入るかを検索して直線補間をするしかなさそうですね。
No.5
- 回答日時:
様々な解決方法があると思いますが、出来るだけシンプルになるよう考えてみました。
作業用のセルを使用してもよいという前提ですが、添付画像をご覧ください。
入力セルをA1セルとし、C1セルに入力値に対する出力値を表示するものとします。
B1セルに、
=ROUNDDOWN(A1,-2)
という数式を記述しています。
さらに、C1セルに
=IFS(A1<=100,1.5,A1>=900,5.1,TRUE,0.6+(1900-B1)*B1/200000+(0.9-B1/1000)*(A1-B1)/100)
という数式を記述しています。
これで、C1セルにご希望の結果が表示されると思います。
数式の意味を説明するととても長くなります。
なにを計算しようとしているのか解析してみてください。
なお、作業セルをしたくない場合は、C1セルに記述した数式のB1の部分全てをROUNDDOWN(A1,-2)に置換すればよいわけですが、数式が長くなり、判りずらいものになってしまいます。

No.4
- 回答日時:
添付図参照です。
INDEX関数とMATCH関数とIF関数を使います。
E列に数値を入力すると、K列に答えがでます。
添付図では計算させる部分は3列作っていますが、必要に応じて調整ください。
A列は必要ありませんが、F列に表示される数字がA列のNo.に対応しています。(B~F列は必要です)
F~J列は作業列です。邪魔にならないところに移動してもよいです。
◆手順
1.添付図のような表を作成します。
2.F2セルに『=MATCH($E2,$B$2:$B$12,1)』を入力します。
3.G2セルに『=INDEX($B$2:$B$12,$F2)』を入力します。
4.H2セルに『=INDEX($B$2:$B$12,$F2+1)』を入力します。
5.I2セルに『=INDEX($C$2:$C$12,$F2)』を入力します。
6.J2セルに『=INDEX($C$2:$C$12,$F2+1)』を入力します。
7.K2セルに『=IF($E2<100,$C$2,IF($E2>900,$C$12,FORECAST($E2,$I2:$J2,$G2:$H2)))』を入力します。
8.F2~K2セルを下方向に必要なだけコピペします。
数式を組み合わせることで作業列を減らすことはできると思いますが、理解しやすいような式にしています。必要に応じて式の統合を行ってください。

No.2
- 回答日時:
#1さんのだと,120とかの補間ができませんね。
私は次のようにして,#1さんと同様にtableを使い,補間もできるようにしました。=LOOKUP(C5,_table1)+(C5-@INDIRECT("tables!"&ADDRESS(LOOKUP(C5,_table2),_Tcolumn)))/(@INDIRECT("tables!"&ADDRESS(LOOKUP(C5,_table2)+1,_Tcolumn))-@INDIRECT("tables!"&ADDRESS(LOOKUP(C5,_table2),_Tcolumn)))*(@INDIRECT("tables!"&ADDRESS(LOOKUP(C5,_table2)+1,_Ccolumn))-LOOKUP(C5,_table1))
(全体像は省略します)。ちょっと敷居が高いのでif文だけでやるのが手っ取り早いでしょう。
先ず100以下を
=if(A2<100, 1.5, 次のif文)
で処理し(A2が参照セルとして),「次のif文」に次の文を入れて200以下を処理します。
if(A2<200, A2*0.008+0.7 , 次の次のif文)
同様にして「次の次のif文」で300以下を処理し,同様のことを繰り返します。かなり長い式となりますが,手っ取り早い方法でしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelでオートフィルをした時に...
-
指定した範囲から、文字A、文字...
-
2013Excel保存済みファイルグレ...
-
Excelで基準値に対する振り分け...
-
[大至急!]ExcelSheetFreeの使...
-
勤怠表エクセル関数について
-
お世話になります エクセルにつ...
-
エクセルで リンクが切れない状...
-
仕事で使う数式を自分で作成で...
-
VBA で PCの 時刻を サーバー時...
-
【Excel】エクセルでグループ化...
-
複雑なシフト表から1日ごとの...
-
エクセルの数式で教えてください。
-
Excel2019です。いつの間にかリ...
-
エクセルの関数について
-
Excelの関数についてしつもんで...
-
Excel2013を使用 指定した範囲...
-
エクセルのツールバーのプルダ...
-
Excel countif関数で取り消し線...
-
エクセル2016でfilter関数がな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelでA1に「年」B2に「干支」...
-
エクセル マイナスの表示を▲に...
-
エクセルで隣接していない複数...
-
エクセルで当番表を作成したい...
-
Excelが苦手過ぎて、まともに使...
-
excel2003ではdisplayformatは...
-
Excelの関数で実現可能か知りた...
-
エクセル関数 複数の列に文字が...
-
Excel同士のデータの突合
-
Excelで1つしかない値だけを抽...
-
Excel初心者で他の方が作ったエ...
-
Excel関数のことで教えてくださ...
-
Excel関数 マイナスは赤字、+の...
-
出退勤管理の遅刻・早退時間に...
-
エクセルでセルを挿入するとき...
-
VBA 選択範囲とUnionの使い方に...
-
Excel countif関数で取り消し線...
-
Changeイベントを使用して重複...
-
マクロを教えてください
-
能力が問われると思う
おすすめ情報