Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5314 / 76732 ←次へ | 前へ→

【77031】0の表示
質問  BSESU  - 15/5/9(土) 12:03 -

引用なし
パスワード
   有効数字が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)

255 hits

【77031】0の表示 BSESU 15/5/9(土) 12:03 質問[未読]
【77032】Re:0の表示 マナ 15/5/9(土) 13:34 発言[未読]
【77033】Re:0の表示 BSESU 15/5/9(土) 14:10 質問[未読]
【77034】Re:0の表示←訂正 BSESU 15/5/9(土) 14:15 発言[未読]
【77035】Re:0の表示←訂正 マナ 15/5/9(土) 14:32 発言[未読]
【77036】Re:0の表示←訂正 BSESU 15/5/9(土) 15:28 お礼[未読]
【77037】Re:0の表示←訂正 BSESU 15/5/9(土) 16:57 お礼[未読]
【77062】Re:0の表示 独覚 15/5/12(火) 15:53 発言[未読]
【77063】Re:0の表示 独覚 15/5/12(火) 15:59 発言[未読]

5314 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free