
有効数字N桁の処理をするマクロ
ROUND2(aa,NN) aa処理する数字、 NN:有効数字桁数
ROUND2 = Application.Round(aa, -Int(Application.Log(Abs(aa))) - 1 + nn)
をつかって、有効数字N桁表示をさせるようにしています。これを使って1.012や0.304という数字を有効数字2桁で処理しセルに値を返すと1や0.3と表示してしまいます。
これを1.0や0.30といった形で有効数字で丸めた値そのままをセルに返したいのですが、どのようなマクロを追加すればよいのでしょうか?
説明がわかりにくいかとおもいますが、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
こんにちは。
>ROUND2 = Application.Round(aa, -Int(Application.Log(Abs(aa))) - 1 + nn)
マクロですか?
Excel97 VBA方式を使うなら、その意味を分かっていないといけませんが、Application.Logは、エラーにはなりませんが、VBAにも使い方が違いますが、Log関数はあります。ワークシート関数とVBA関数と、作ったチームが違うようですので、若干の仕様の違いが出てくるようです。なんとか、VBA方式で書くことを前提に進めてください。ご自身のためです。
また、ワークシートに貼り付ける場合と、VBAマクロのみで行う場合とは違います。
ユーザー定義関数の場合は、型のキャストが働かないようなスタイルにします。以下が、必ずしもベストな方法ではありませんが、現在の出された質問から想定できる範囲です。
もし、VBAマクロで実施するなら、小数点のあるなしを判定して書式(NumberFormat)を換えます。
'ユーザー定義関数(標準モジュール)
'-------------------------------------------
Function EffectDegit(ByVal num As Variant, ByVal n As Integer) As String
Dim buf As Variant
Dim i As Long
'ユーザー選択
Const myFORM1 = "#,##0"
Const myFORM2 = "0"
If VarType(num) >= vbString Then Exit Function
i = Int(Log(Abs(num)) / Log(10)) + 1 '桁数の比較
If i > 0 Then '整数
If i >= n Then
n = i - n
buf = Int(num / 10 ^ n + 0.5) * 10 ^ n
buf = Format$(buf, myFORM1)
Else
buf = Int(num)
End If
Else
n = i - n
buf = Int(num / 10 ^ n + 0.5) * 10 ^ n
buf = Format$(buf, "0." & String(Abs(n), "0"))
End If
EffectDegit = buf
End Function
'-------------------------------------------
場合分けで書式を設定するという方法は考えてませんでしたが、
回答いただいた内容を踏まえて、返された値によって書式を設定していくコードを組んでいこうと思います。
大変参考になりました。ありがとうございました。
No.4
- 回答日時:
#3の文章が足したり削ったりして、ヘンでした。
「Excel97 VBA方式を使うなら、その意味を分かっていないといけませんが、Application.Logは、エラーにはなりませんが、VBAにも使い方が違いますが、Log関数はあります。」
訂正:
「Application.関数名という、Excel97 VBA方式を使うなら、その意味を分かっていないといけません。Application.Logというのは、VBAにも、Log関数はありますので、こちらを使ったほうがよいです。」
No.2
- 回答日時:
マクロというより、エクセルユーザー定義関数を作るということだと思う。
それにはVBAコード作成が必要だが。質問している本人が、どういう処理ロジックになるか考えて、文章や箇条書きで説明しないと。その点は質問者の方が理科系?で詳しかろう。丸投げしないで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 化学 有効数字の取り扱いについて 高校化学では、測定値同士の計算結果の有効数字は、測定値に合わせるようにな 4 2022/06/30 14:07
- 化学 有効数字の問題にです 4 2022/08/02 22:33
- 高校 高校化学、気体、温度の有効数字 3 2023/04/02 11:39
- 物理学 丸め 5 2022/08/04 12:25
- 計算機科学 この問題なぜ答えが有効数字2桁なんでしょうか、問題の数字は有効数字3桁なのに… 5 2022/06/17 10:06
- 高校 この問題の(2)なぜ答えが有効数字1桁なんですか?自分は有効数字2桁で3.7×10^3にしました 2 2023/02/11 17:23
- 高校 有効数字計算 確定した値を含む 2 2023/01/18 06:03
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
- 高校 0.003752を科学表記を使って有効数字3桁で表すと何になるんでしょうか? 5 2022/10/26 20:03
- 数学 有効数字について この問題の答えが60.0分となっていたのですが、有効数字が3桁なのはどこから判断し 1 2022/04/06 13:16
このQ&Aを見た人はこんなQ&Aも見ています
-
それもChatGPT!?と驚いた使用方法を教えてください
仕事やプライベートでも利用が浸透してきたChatGPTですが、こんなときに使うの!!?とびっくりしたり、これは画期的な有効活用だ!とうなった事例があれば教えてください!
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
VBAで有効数字の設定
Visual Basic(VBA)
-
エクセルで有効桁を指定して丸めることは出来る?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel・Word リサーチ機能を無...
-
Excel マクロでShearePoint先の...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
Excel_マクロ_現在開いているシ...
-
Excel マクロ VBA プロシー...
-
エクセルに張り付けた写真のフ...
-
マクロ実行時、ユーザーフォー...
-
エクセルで縦に並んだデータを...
-
TERA TERMを隠す方法
-
ExcelのVBA。public変数の値が...
-
エクセルVBAでNAVITIMEを使って...
-
エクセルで別のセルにあるふり...
-
VBAにて別ワークブック上の実行...
-
エクセル VBA実行中のApplicati...
-
【Excel】複数のマクロをまとめ...
-
組んだマクロをメールで送る
-
ソース内の行末に\\
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
Excel マクロでShearePoint先の...
-
エクセルに張り付けた写真のフ...
-
Excel_マクロ_現在開いているシ...
-
ExcelのVBA。public変数の値が...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
ExcelVBAでPDFを閉じるソース
-
Excel VBAからAccessマクロを実...
-
特定文字のある行の前に空白行...
-
エクセルで別のセルにあるふり...
-
【EXCEL VBA】オートシェイプを...
-
エクセルで縦に並んだデータを...
-
マクロで空白セルを詰めて別シ...
-
wordを起動した際に特定のペー...
おすすめ情報