有効数字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も見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
VBAで有効数字の設定
Visual Basic(VBA)
-
エクセルで有効桁を指定して丸めることは出来る?
Excel(エクセル)
-
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
Excel マクロ VBA プロシー...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
メッセージボックスのOKボタ...
-
エクセルに張り付けた写真のフ...
-
TERA TERMを隠す方法
-
特定文字のある行の前に空白行...
-
マクロで空白セルを詰めて別シ...
-
Excel マクロでShearePoint先の...
-
エクセルで別のセルにあるふり...
-
ExcelVBAでPDFを閉じるソース
-
Excel_マクロ_現在開いているシ...
-
Excelで大量のデータを規則的に...
-
マクロ実行時、ユーザーフォー...
-
ソース内の行末に\\
-
VC++ 2008 EXPRESS "_T"識別子...
-
エクセル VBA実行中のApplicati...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
ExcelのVBA。public変数の値が...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
ExcelVBAでPDFを閉じるソース
-
特定文字のある行の前に空白行...
-
Excel VBAからAccessマクロを実...
-
wordを起動した際に特定のペー...
-
マクロ実行時、ユーザーフォー...
-
エクセルで別のセルにあるふり...
-
マクロで空白セルを詰めて別シ...
-
ソース内の行末に\\
-
Excel_マクロ_現在開いているシ...
-
ダブルクリックで貼り付けた画...
おすすめ情報