- ベストアンサー
エクセル関数?教えてください。これはどうすればできますか?未熟者です
A列÷B列の答えの数値を削除と四捨五入し、プラス表示とマイナス表示をしたい。 答えは2パターンになります。 (1)A列÷B列の答え1.091763・・・などとなります。それを小数点一位以上(1.9)を削除し小数点五位(6)を四捨五入して数値で表したいのです。 そして出た答え、小数点以上が(1.)の場合プラス表示とし918で完成させたい。 (2)A列÷B列の答え0.991763・・・などとなります。それを小数点一位以上(0.9)を削除し小数点五位(6)を四捨五入して数値で表したいのです。 そして出た答え、小数点以下(0.)の場合はマイナス表示としと-918で完成です。 うまく説明できませんが、よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 こんな式でどうかな? =SIGN(A1-1)*ROUND(MID(A1,4,4)/10,0) 解説: MID で、上から、3文字を取ったので、4文字目から、小数点5位だから、4文字を取り出し、 取り出した4文字目を四捨五入させるけれども、それは、1の位の数字だから、10で割る。 正負は、元の数から、1を引いて、符号を取ればよいわけです。 なお、#1さん提出された数では、その原則に従えば、 0.99996 は、-1000 になるはずです。 例外法則があれば別です。 また、小数点を小数点のまま扱うと、浮動小数点丸め誤差が発生しますので、一旦、数値を文字列固定して取り出すか、整数にするかしないと出来ないと思います。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
セルA1:A2に 1.091763 0.991763 があるとする。 B1に =ROUND(A1,4)と入れてB2に式を複写する。 結果 1.0918 0.9918 C1に=MID(B1,4,3)といれC2に式を複写する。 結果 918 918 D1に=IF(A1>=1,C1*1,C1*-1)をいれてD2に式を複写する。 書式をユーザー定義+#、-#、#と入れる。 結果 +918 -918 これでよいでしょうか。 1つにまとめて =IF(A1>=1,MID(ROUND(A1,4),4,3)*1,MID(ROUND(A1,4),4,3)*-1) A列の数が10以上にならないことが必要ですが。
- merlionXX
- ベストアンサー率48% (1930/4007)
=ROUND(A1/B1-ROUNDDOWN(A1/B1,1),4)*10000*IF(ROUNDDOWN(A1/B1,1)<1,-1,1)
- adaga2324
- ベストアンサー率21% (25/117)
こういう式はどうでしょうか。 C1に、A1/B1が入っているとして、四捨五入の関数round(x,y)、切り捨ての関数rounddown(x,y)を使って、3桁の数字の部分を求めてD1とします。 =round((C1-rounddown(C1,1))*10000,0) あとは、プラスマイナスの処理だけですから、答えをE1とすると、 =if(C1>1,D1,-D1) いかがでしょうか。
- shkwta
- ベストアンサー率52% (966/1825)
C1に割り算の答えが入っているとして、 =IF(C1>=1,"","-")&RIGHT(TEXT(C1,"0.0000"),3) =IF(C1<0.99995,-1,1)*ROUND(MOD(C1,0.1)*10000,0) =IF(C1<1,-1,1)*ROUND(MOD(C1,0.1)*10000,0) どれでも、ご質問のものと同じ結果になります。 しかし、実はご質問にはあいまいな点があります。つまり、0.99996のような場合どうするのかがわかりません。 0.99996の場合、上の3つの式は異なる結果になります。 1番目の式は -000 2番目の式は、1000 3番目の式は、-1000 お好みのものを選んでください。