アプリ版:「スタンプのみでお礼する」機能のリリースについて

少数の中で最初に現れる0以外の数字から4桁目を四捨五入したいです。
桁数が一定でないため、最初に現れる0以外の数字の位置さえ算出できれば、
ROUND関数で四捨五入する位置を指定できると思うのですが、
FIND関数でうまく行かず悩んでいます。

例)
0.032456  → 0.0325
0.1238   → 0.124
0.0004893 → 0.000489

元データの少数がA2にあるとして、
=FIND(1~9,A2)
FINDの中身をどう指定したらよいでしょうか。
(別途セルに1~9を入力しておきA1:I1等指定するより、
式に直接1~9を指定できたらありがたいです)

また、FINDで解が複数出るかと思いますが、
最初に現れる位置が知りたいので、
一番小さい解を拾わなければなりません。
=MIN(IFERROR(FINDの複数解,0)) とエラー回避すると
0が必ず小さい数になるので意味がありません。

説明下手で申し訳ないです。
色々調べてみましたが行き詰ってしまいました。
解決策あれば教えてください。よろしくお願いします。
Excelは2013です。

A 回答 (5件)

> 最初に現れる0以外の数字の位置さえ算出できれば、



LOG10で計算できるのでは。

> 0.032456  → 0.0325
> 0.1238   → 0.124
> 0.0004893 → 0.000489

に対して、
-INT(LOG10(0.032456))=2
-INT(LOG10(0.1238))=1
-INT(LOG10(0.0004893))=4
とか。
    • good
    • 0
この回答へのお礼

LOG10を使って0以外の位置を算出できました!
10を何乗すればその数になるか、という事なんですね。
=ROUND(A1,INT(LOG10(A1))*-1+2) この式で解決しました。
かなり複雑な数式を作って悩んでいたので、このようなスッキリした数式で大変嬉しいです。
+2を増減させる事で表示する桁数も変えられありがたいです。
ありがとうございました。

お礼日時:2019/10/15 19:03

No.4で回答した者です。


確認せずに投稿してしまい、誤字があります。申し訳ないです。

他の方の解凍に → 他の方の回答に
A1の数値があるとします。 → A1に数値があるとします。
    • good
    • 0

他の方の解凍にありますように、指数を出すことで0でない位置を特定できます。



A1の数値があるとします。
0でない位置は、-INT(LOG(A1)) で出すことができます。

よって、=ROUND(A1,-INT(LOG(A1))+2) とすれば、目的の数値を得られます。
    • good
    • 0
この回答へのお礼

解決後にメッセージ確認しました。
理解した事が間違っていなかった事を確認できました。
また、INTの前に-を入れれば*-1としなくても良いのですね。
ありがとうございます。ご回答感謝いたします。

お礼日時:2019/10/15 19:05

結果を丸めではなく四捨五入じゃないといけないのですか?



それならば以下で良いと思います。

=0-RIGHT(TEXT(A2,"0.00E+00"),3)
    • good
    • 0
この回答へのお礼

TEXTで指数形式にすることで、少数部分と10の何乗かに分けられる事を理解しました。
なぜ0-RIGHT( ,3)とするかが分からず苦戦…。
しかし大変参考になりました。ありがとうございました。

お礼日時:2019/10/15 18:50

指数表示にして、小数点以下4桁表示にする・・・じゃダメですか?

    • good
    • 0
この回答へのお礼

”指数”の知識がありませんでしたが、調べて理解しました。
大変勉強になりました。ありがとうございました。

お礼日時:2019/10/15 18:45

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