[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『小数点桁調整のVBA記述』(万年太郎)
小数点以下の桁数がばらばらのデータが下記の様に並んでいます。 小数点以下桁数が2桁以上の時は2桁に 0の時はそのままに、というVBA記述をしたのですが、エラーになり、うまく動きません。 どなたかご教示下さいますか? m(_ _)m m(_ _)m
sheet1
0 0 0 1.53 1.5 3.1415678 3.1467 10.8901 7.6487 0.29878 0 0
Sub 小数点調整テスト() Dim a, LrA As Integer LrA = Range("A65536").End(xlUp).Row
For a = 1 To LrA If Cells(a, 1).NumberFormatLocal = "0.00_" Then Cells(a, 2).Value = Cells(a, 1).NumberFormatLocal = "0.0_" Else If Cells(a, 1).NumberFormatLocal = "0" Then Else End If End If Next End Sub
WindowXp,Excel2002 (万年太郎)
表示形式を弄るのでしょうか? 下記案は数値そのものを変更しています。 (ROUGE) Sub test() Dim rr As Range With Sheets("Sheet1") For Each rr In .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)) rr.Offset(, 1).Value = Format(rr.Value, "0.00") '<--小数点以下第3位を四捨五入 rr.Offset(, 2).Value = WorksheetFunction.RoundDown(rr.Value, 2) '<--小数点以下第3位を切捨て Next End With End Sub
これで良いんじゃないかと(丸めをどうするのかわかりませんが。) [=0]0;0.0 BJ
ROUGEさん、いつもお世話になっております。ROUGEさんのサンプルでうまく行きましたが、 数値そのものの変更でなく表示形式変更では無理ですか? >< (万年太郎)
>WorksheetFunction.RoundDown(rr.Value, 2) のRoundDownがVBAヘルプに載っていないのですが、 Round関数の1つですか? もし、そうだとしてRoundDown(x,y,z)の x=Range y=Rangeの値 z=桁数 と理解していいですか? @~@; (万年太郎)
WorksheetFunctionの方を調べてみてください。 ワークシート関数をVBA内で使用できるようにするものです。 (独覚)
独覚さん、アドバスありがとうございます。EXCELのhelpにありました。 m(_ _)m (万年太郎)
表示形式は、BJさんの案をお試しください。 ただし、表示形式で対応した場合、表示は四捨五入されます。 ご希望が切り捨てであれば、厳密に対応するのは難しいです。
[=0]0;0.00[Ctrl+Jを押す]00000 折り返して表示のチェックを入れておく。
(ROUGE)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.