[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『四捨五入について』(秋空)
おたずねしますがよろしくお願いします。
例えば、6÷4とします。答えは1.5ですね。
現状この式で=SUBSTITUTE(TEXT(F5,"#,0.###")&CHOOSE(6-LEN(TEXT(MOD(F5,1),"0.###"))," ","0","(00)"," "),". ","")
対応していたのですが、おかしいと指摘されました。
どの様に変更すれば1.5となるかお教えください。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
四捨五入するのに、そんな凝った数式が必要なんですか?
なんか説明が不足していないですかねぇ。
F5セルに何が入っていると、何になるべき所、何になってしまうのか、それを書いて貰えませんか?
(半平太) 2016/10/12(水) 11:40
なにがしたいのかまったくわからん。
とりあえず、
・整数なら小数点なしとする。 ・小数は3桁まで
として。
=TEXT(F5,"#,##0"&IF(MOD(F5,1)=0,"",".###")) (GobGob) 2016/10/12(水) 12:16
(秋空) 2016/10/12(水) 12:19
普通にROUND関数を使えばいいのでは? =ROUND(D5/E5,3) (bi) 2016/10/12(水) 12:27
・MOD+TEXTの結果が0.5。 LENで3(3文字だから) ・6-3 で 3。 ・CHOOSEで3に対応している書式が "(00)"
割り切れてるからこの答えでいいんでないの?
まったくわからん。
ルール知らんのに無理。
ちゃんとルールから説明したほうがええよ。 (GobGob) 2016/10/12(水) 12:29
=TEXT(A1,IF(LEN(REPLACE(A1,1,FIND(".",A1&"."),""))>3,"#,0.###(!0!0)","G/標準")) か?
式から見て小数点以下4桁目で四捨五入と判断した。
違う場合は「>3」部分を調節してくれ。 (ねむねむ) 2016/10/12(水) 13:04
すまない。 前の式だと四捨五入が無い場合に3ケタごとのカンマがつかなかった。
=TEXT(A1,IF(INT(A1)=A1,"#,0",IF(LEN(REPLACE(A1,1,FIND(".",A1&"."),""))>3,"#,0.###(!0!0)","#,0.###"))) で試してみてくれ。 (ねむねむ) 2016/10/12(水) 13:09
小数第3位未満四捨五入 [[20121201102852]]
桁揃え必要ないかも。だけどご参考
(GobGob) 2016/10/12(水) 23:27
リンク先見たらおいらの回答にそっくりな質問式でしたなwww (GobGob) 2016/10/12(水) 23:32
桁そろえなしで。
=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(A1,"#,0.000 "),".000 ",""),"00 ","(00)"),"0 ","(0)")) (GobGob) 2016/10/13(木) 07:57
読み返して。。。
A B 1 1.5 1.5 2 1.55 1.55 3 1.555 1.555 4 1.5555 1.556 5 1 1 6 1.00005 1(000) 7 1.50005 1.5(00) 8 1.52005 1.52(0) 9 1000 1,000 10
B1 =IF(LEN(MOD(A1,1))>5,SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TEXT(A1,"#,0.000 "),".000 ","(000)"),"00 ","(00)"),"0 ","(0)"),TRIM(SUBSTITUTE(TEXT(A1,"#,0.### "),". ",""))) (GobGob) 2016/10/13(木) 18:28 → 18:32 見直し
>上司に繰り上がりでゼロになれば(0)は必要ないと言われました。
ほいほい。
>小数第4位を四捨五入して繰り上がるときには(0)を付ける。 >5.1896→5.19(0)このようにする。
・・・? これって繰り上がって「ゼロ」になってるんでないの?
以下の条件ならどうなるのかおしえてちょ。
1.5 (小数点第一位で割り切れる) 1.55(小数点第二位で割り切れる) 1.555(小数点第三位で割り切れる) 1.5544 → 1.554(小数点第四位で四捨五入 数値は繰り上がらない ゼロでない) 1.5545 → 1.555(小数点第四位で四捨五入 数値は繰り上がる ゼロでない) 1.5595 → 1.560(小数点第四位で四捨五入 数値は繰り上がる ゼロである) 1.5604 → 1.560(小数点第四位で四捨五入 数値は繰り上がらない ゼロである) (GobGob) 2016/10/14(金) 14:47
1.5 → 1.5 1.55 → 1.55 1.555 → 1.555 1.5544 → 1.554 1.5545 → 1.555 1.5595 → 1.560 1.5604 → 1.560 (秋空) 2016/10/14(金) 15:11
>小数第4位を四捨五入して繰り上がるときには(0)を付ける。 >5.1896→5.19(0)このようにする。
これは「小数第4位を四捨五入して繰り上がるとき」ですよね? ↓ >1.5595 → 1.560
だとすると、1.56(0) になるべきなんじゃないですか?
(半平太) 2016/10/14(金) 23:14
>「君に変わったのだから」との話で
「君に合わせて、括弧は無しにしよう。」
と、仕様が変わったという話ですか?????
なら、解決ですかね???
テーマとして面白そうだけど、解決なら、考えるモチベが無くなるので。。。
(まっつわん) 2016/10/15(土) 09:36
回答者は、上司とのやり取りを傍で聞いてる訳じゃないんですから、 仕様が変わったのなら、そう書いてもらわないと、訳が分からなくなります。
既に出ている回答で使えるものがあるのかも知れませんが、調べるのも面倒なので、 初っ端にGobGobさんが提示した数式を少し変更して、
B1セル =TEXT(A1,"#,##0"&IF(MOD(A1,1)=0,"",IF(ROUND(A1,3)<>A1,".000",".###")))
<結果図> 行 ___A___ __B__ 1 1.5 1.5 2 1.55 1.55 3 1.555 1.555 4 1.5544 1.554 5 1.5545 1.555 6 1.5595 1.560 7 1.5604 1.560 8 1 1
(半平太) 2016/10/15(土) 14:40
(秋空) 2016/10/17(月) 08:47
=MOD(A1,1) を計算すると判りますが、2進数誤差のため、計算結果には余りがあることになっており、だから =0 の判定に流れないようですね。
余りがある程度以上小さければ、0扱いしてはどうでしょうか。 =TEXT(A1,"#,##0"&IF(MOD(A1,1)<0.0001,"",IF(ROUND(A1,3)<>A1,".000",".###"))) (???) 2016/10/17(月) 10:07
=TRIM(SUBSTITUTE(TEXT(A1,"#,##0."&IF(ROUND(A1,3)=A1,"### ","000")),". ","")) (GobGob) 2016/10/17(月) 13:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.