dポイントプレゼントキャンペーン実施中!

いつもお世話になります。
下記マクロを自動で作ったのですが、例えば(1)でセレクトした各セルには、0.1234567・・・といった、小数点以下10桁程度のデータが入っています。
これを(2)でペーストする時に、見た目だけではなく、データ自体を小数点以下3桁にしたい場合、何かよい方法はないものでしょうか?
宜しくお願いします。

(1)Range("T6:V10","T6:V10,AA6:AC10,AH6:AJ10").Select
 Selection.Copy
 Sheets("Data").Select
 Range("D39").Select
(2)Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= False, Transpose:=True

A 回答 (2件)

四捨五入ですね?



No1で書かれているVBAのRoundは使用上注意が必要です。

Excelでワークシート関数 Round は、"算術型" の丸め処理を行います。"算術型" 丸め処理では ".5" は常に切り上げられます。 (四捨五入)

これに対して VBA の Round 関数は "銀行型" の丸め処理を行います。"銀行型" の丸め処理の場合は ".5" は、結果が偶数になるように丸められ、切り上げられることも、切り捨てられることもあります。

例:
12.1225→12.122
12.1235→12.124
12.1245→12.124
12.1255→12.126

これを防ぐには

For Each myRng In Selection
myRng.Value = Application.WorksheetFunction.Round(myRng.Value, 3)
Next myRng

というふうに、Application.WorksheetFunction.を追加してください。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございます。
ご指導がなければ、何も考えずに次回からも使うとこでした(^^;)
また、宜しくお願いします。ありがとうございました。

お礼日時:2004/04/09 16:24

色々考えられますが、一番手っ取り早いのは、(2)の下の行に、


For Each myRng In Selection
  myRng.Value = Round(myRng.Value, 3)
Next myRng
とする方法でしょうか?

ところで(1)でエラーでませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速やってみます!

エラーは、出てませんが・・・

お礼日時:2004/04/09 16:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています