- ベストアンサー
Excel◆近い数値をイコールとしてマークをつけたい
こんにちわ。 関数にあまり詳しくないので質問させて下さい。 【実行したい例】 A1 | B1 | C1 ------+--------+--------- 125 | 122.3 | ○ A1 : 数値 B1の関数: =ROUNDUP(P5/J5*O5+0.5,1) ※---本当は"122.3"であるが、切り上げで125と表示 させたいため、無理のある切り上げをしてしまっています。 C1 : 同じ数値なら○、異なれば× を 表示させたい A1とB1の数値は表示上、"125"としているが 実際の数値は異なるため、今思いつく限りの関数 =IF(A1=B1,"○","×") などでは"○"と表示してくれません。 どのようにB1、C1にどのように関数を入れればよいでしょうか? 教えてください。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#4のmshr1962です。 >セルDに金額を入力することにより、B1で単価を導き出し >尚、小数点以下で切上げをしたいというのが希望です。 計算単価は売上金額を個数で割って歩掛けしたもので整数でいいのですね。 計算した単価と、想定単価の誤差の有効範囲で設定が変わります。 固定額の場合(例 A1=125円,B1=121円から129円なら125円) =IF(ABS(P5/J5*O5-A1)<5,A1,ROUNDUP(P5/J5*O5,0)) A1の金額より下のみで固定額の場合(例 A1=125円,B1=121円から125円なら125円) =IF(A1=CEILING(P5/J5*O5,5),A1,ROUNDUP(P5/J5*O5,0)) A1のパーセンテージの場合(例 A1=125円,B1=118.8円から131.2円[125円の5%で6.25円の範囲]なら125円) =IF(ABS(P5/J5*O5-A1)/A1<5%,A1,ROUNDUP(P5/J5*O5,0))
その他の回答 (7)
[No.5回答に対する補足]に対するコメント、 単価(確認)の「345.0」の位置をセル B2 ならば、そこの式を単に =ROUNDUP(D2*F2/E2,0) とするだけでOKでは? 小数点を含む計算のリスクを考慮すれば、=ROUNDUP(ROUND(D2*F2/E2,5),0) としておいた方が無難ですが…
補足
対策2段階"=ROUNDUP(ROUND(D2*F2/E2,5),0)"までも 考慮いただいてありがとうございます。 予断になりますが、表を作成した方と現在相談したところ どうやら違う問題が発生してしまいました。 求めたい金額は行に寄って違ってくるそうです。 =ROUNDUP(ROUND(D2*F2/E2,5),0) のみで処理できる 行はこちらで回避してみようと思います。
- cockerel
- ベストアンサー率46% (253/548)
いまもって「本当は"122.3"であるが、切り上げで125と表示させたい」の意味がわからないでいますが、No5さんへの補足の内容であれば、B1に =ROUNDUP(D1/E1*F1,0) を入れるだけでよいように感じられます。
補足
追記させていただいたのですが、少々表の 内容が入り組んでいるため、ご案内いただいた =ROUNDUP(D1/E1*F1,0) では未だ解決できませんでした。 重ねてのご説明ありがとうございます。
出し惜しみせずに、セル P5、J5、O5 の内容もお知らせください。 》 本当は"122.3"であるが、切り上げで125と表示 》 させたいため、無理のある切り上げを… どのような一定の規則に基づくのですか?
補足
記述に漏れが多く回答を頂くにもご迷惑おかけしています。 すみません。 現在の表の状態は以下のようになっています A1 / B1 / C1 / D1 / E1 / F1 単価 単価(確認) A=B 金額 個単位 掛け率 345 345.0 ○ 36,225 100 0.95 E/Fのセルは既に決まっております。 (セルE:個単位は行によって異なります。) セルDに金額を入力することにより、B1で単価を導き出し 尚、小数点以下で切上げをしたいというのが希望です。 C1ではA=Bであれば○としたかった訳です。
- mshr1962
- ベストアンサー率39% (7417/18945)
B1の関数ですが基本的に小数点以下第2位を切り上げですよね。 0.5を足す意味が分かりません。 #1の方の回答のCEILING関数で =CEILING(P5/J5*O5,5) では駄目なのですか? A1前後の数字ならA1を表示ということなら =IF(ABS(P5/J5*O5-A1)<5,A1,ROUNDUP(P5/J5*O5+0.5,1)) とか?これならC1の関数はそのままでいいはずです。
補足
ご返答ありがとうございます。 説明が悪くご迷惑おかけしております。 詳細については、#5の回答を頂いた方に対して総合で 追加させていただきました。 皆さんの回答を参考に今も試しております。 >=IF(ABS(P5/J5*O5-A1)<5,A1,ROUNDUP(P5/J5*O5+0.5,1)) こちらでなんとなくできるかも知れない。といったところですが #5さんに対しての補足を読んで頂いて 更になおすべき点がありましたらご回答頂けるとありがたいです。
- cockerel
- ベストアンサー率46% (253/548)
「A1とB1が一定の範囲で等しいときC1に○をいれる」という意味であれば、C1に =IF(ABS(A1-B1)>5,"","○") を入力すればよいように感じられます(つまり、ABは値のまま動かさないでCで判定のみを行います)。評価基準の5は一例です。
補足
説明が悪くご迷惑おかけしております。 詳細については、#5の回答を頂いた方に対して総合で 追加させていただきました。 なるべくでしたら、C1の関数は現状のままでいければ うれしいと思っています
- o_chi_chi
- ベストアンサー率45% (131/287)
B1の関数でなぜ125になるのか分かりませんが。 B1に関数Fで変換して表示結果を判定したいのであれば 判定するときも"A1=F(B1)"のように変換結果を判定して やればいいのでは。
補足
ご返答ありがとうございます。 説明が悪くご迷惑おかけしております。 詳細については、#5の回答を頂いた方に対して総合で 追加させていただきました。 更に改善点がありましたら、よろしくお願いいたします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
表示上の意味がもう一つ不明だけど 値を5単位毎に切り上げたい場合 =CEILING(122.3,5) のようにすると125になります。 この場合、切り上げた数値が125なら =IF(A1=B1,"○","×") で同じかどうかを調べられる >近い数値をイコール ある値を基準として前後をイコールとみなす場合、 例えば、125を中心として、120<x<130を125と同じとみなすには =IF(ABS(A1-125)<5,"○","×") とする
補足
すみません。分かりにくい記述をしてしまったようですね。 B1の数値 "=ROUNDUP(P5/J5*O5+0.5,1)"は "P5/J5*O5" を計算して "122.3" がだされています。 つまり、 "=ROUNDUP(122.3+0.5,1)" です。 "122.3"では四捨五入で切上げができなかったため 0.5を足してみたのですが、どうも数学的な考え方が得意ではないために 意味の無いことをしてしまっていたようです。 -------- 希望としては、セルB1で数値を出した上、小数点以下を 切上げたかったのですが、頂いた方法を試してみるつもりです。 ありがとうございます。
補足
こちらの表の状態を細部まで伝えられずにいながら 申し訳ないのですが、私にはまだ複雑すぎでうまく応用できそうもありません。 初めてみる関数ceilingも、あり勉強になります。 もう少し調べて理解しなければならないですね。 例を上げての細かいご説明はとてもありがたいです。