|
有効数字が3のとき通常のエクセルは1、0.1となり0が省略され仕事柄、後ろの0も重要な意味をもつので、困っています。
例えば、
123→123
10→10.0(.0を加える)
0.1→0.100(.00を加える)
など最初の数字からゼロも含めて3つ表示させたいのです。
現在は、目視で手入力をしていますが、色々考え、下記のようなことも考えられるのかなと思ったのですが、表示したい数値が毎回桁が違うため、これらを合わせると膨大な式になってしまうのでマクロで解決できないかと思い、相談させていただきました。
※見づらくて大変申し訳ありません
条件 sample round2j Len() 最終表示
100>=x 123 123 - 123
→ROUND2J(B2,3)
100>x>=10 99 99 2 99.0
11.111 11.1 4 11.1
99.99 100 3 100
→IF(100>ROUND2J(B3,3)>=10,IF(D3=2,ROUND2J(B3,3)&".0",ROUND2J(B3,3)))
10>x>=1 3.1123 3.11 4 3.11
1.1 1.1 3 1.10
9.9999 10 2 10.0
1 1 1 1.00
→IF(10>ROUND2J(B6,3)>=1,IF(D6=1,ROUND2J(B6,3)&".00",IF(D6=2,ROUND2J(B6,3)&".0",IF(D6=3,ROUND2J(B6,3)&"0",ROUND2J(B6,3)))))
1>x>=0.1 0.9999 1 1 1.00
0.654 0.654 5 0.654
0.49 0.49 4 0.490
0.1 0.1 3 0.100
→IF(1>ROUND2J(B10,3)>=0.1,IF(D10=1,ROUND2J(B10,3)&".00",IF(D10=3,ROUND2J(B10,3)&"00",IF(D10=4,ROUND2J(B10,3)&"0",ROUND2J(B10,3)))))
0.1>x>=0.01 0.099999 0.1 3 0.100
0.094444 0.0944 6 0.0944
0.01 0.01 4 0.0100
0.011 0.011 5 0.0110
→IF(0.1>ROUND2J(B14,3)>=0.01,IF(D14=3,ROUND2J(B14,3)&"00",IF(D14=4,ROUND2J(B14,3)&"00",IF(D14=5,ROUND2J(B14,3)&"0",ROUND2J(B14,3)))))
0.01>x>=0.001 0.009999 0.01 4 0.0100
0.00944 0.00944 7 0.00944
0.001 0.001 5 0.00100
0.0011 0.0011 6 0.00110
→IF(0.01>ROUND2J(B18,3)>=0.001,IF(D18=4,ROUND2J(B18,3)&"00",IF(D18=5,ROUND2J(B18,3)&"00",IF(D18=6,ROUND2J(B18,3)&"0",ROUND2J(B18,3)))))
0.001>x>=0.0001 0.00099999 0.001 5 0.00100
0.000944 0.000944 8 0.000944
0.0001 0.0001 6 0.000100
0.00011 0.00011 7 0.000110
→IF(0.01>ROUND2J(B22,3)>=0.001,IF(D22=5,ROUND2J(B22,3)&"00",IF(D22=6,ROUND2J(B22,3)&"00",IF(D22=7,ROUND2J(B22,3)&"0",ROUND2J(B22,3)))))
0.0001>x>=0.00001 0.000099999 0.0001 6 0.000100
0.0000944 0.0000944 9 0.0000944
0.00001 0.00001 7 0.0000100
0.000011 0.000011 8 0.0000110
→IF(0.01>ROUND2J(B26,3)>=0.001,IF(D26=6,ROUND2J(B26,3)&"00",IF(D26=7,ROUND2J(B26,3)&"00",IF(D26=8,ROUND2J(B26,3)&"0",ROUND2J(B26,3)))))
ちなみにROUND2J()は下記のような関数になっています
Function ROUNDJ(aa, nn) '数値を丸めて指定した桁数にする
ROUNDJ = Application.Round(aa, nn)
If CCur(Abs(ROUNDJ - aa) * 10 ^ (nn + 1)) = 5 And Application.RoundDown(aa, nn) * 10 ^ nn Mod 2 = 0 Then _
ROUNDJ = Application.RoundDown(aa, nn)
End Function
Function ROUND2J(aa, nn) '数値を任意の有効桁数に四捨五入する
ROUND2J = ROUNDJ(aa, -Int(Application.Log(Abs(aa))) - 1 + nn)
|
|