「みんな教えて! 選手権!!」開催のお知らせ

こんにちは。 会社でExcelを使って業務の効率化を担当しているものです。

小数点以下の数値を含む、様々な桁数の数字をExcelで管理しています(1000~0.0001まで)。

有効数字・3桁で自動整理させるために以下の関数を利用しようと考えました。
切り上げの場合、
=ROUNDUP(A1,3-INT(LOG(ABS(A1))))

しかしこの数式だと、計算結果が「0.12301…」という数値の場合、「0.124」と計算されてしまいます。4桁目以下に0以上の数値があると、そこから切り上げをしてしまします。
有効数字3桁で整理する場合、5桁目以下に「1以上」の数値があっても、4桁目が「0」の場合は「切り捨て(0.123)」にしたいのです。

ちなみにROUND(四捨五入)関数の場合は、数値が「0.12309」であっても、「0.123」となります。「0.1235」は「0.124」となります。

そのため四捨五入の関数「ROUND」を使って、「0捨1入」ができないか調べましたがどうしてもわかりません。整数値の場合や、小数点第一位の数値と桁数が限定されている場合は、「-0.1」などを入れることで対応する方法があるようです。
しかしながら、冒頭に記載したように管理する数値の大きさがいろいろあり、都度変わるため、この方法が一括で利用できません。

この問題が解決できないため、この部分だけ手入力修正が必要になってしまい、完全自動化ができません。
どなたか、お知恵をお貸しください。よろしくお願いいたします。

A 回答 (5件)

=ROUNDUP(ROUNDDOWN(A1,(3-INT(LOG(ABS(A1))))),3-INT(LOG(ABS(A1))))


有効数字+1桁で切り捨ててから切り上げるので良いのでは。
    • good
    • 0
この回答へのお礼

返信が遅くなり、申し訳ございません。
ご回答いただいた数式を当てはめると、理想の計算表が出来上がりました!
発想としては持っていたのですが、それをどのように関数として表現してよいかわからず、困っていました。
助かりました。ありがとうございました。

お礼日時:2020/12/14 21:25

判定しなさい。

    • good
    • 0

=IF(ROUNDDOWN((A1-ROUNDDOWN(A1,3))*10000,0)=0,ROUNDDOWN(A1,3),ROU

NDUP(A1,3))
    • good
    • 0
この回答へのお礼

返信が遅くなり、申し訳ございません。
ご回答いただいた数式を当てはめると、うまく結果が得られました。
ただ自分ではこの数式の意味を理解できていないので、もう少し勉強してみます。ありがとうございました。

お礼日時:2020/12/14 21:29

「1000~0.0001まで」ってことは、負の数は無いんですよね?


であれば、単純に0.0009を加算して、小数点4桁以下を切り捨てる感じで良いような気がします。
    • good
    • 0
この回答へのお礼

返信が遅くなり、申し訳ありません。
対象セル値に0.0009を加算してrounddownしてみましたが、イメージ通りになりませんでした。
ご回答ありがとうございました。

お礼日時:2020/12/14 21:15

roundupは切り上げだからじゃないですか?


rounddownは?
    • good
    • 0
この回答へのお礼

返信が遅くなり、申し訳ございません。
rounddownで計算すると、すべて切り捨てになってしまいます。
わたくしの質問文がわかりにくかったのだと思います。
ご回答ありがとうございました。

お礼日時:2020/12/14 21:10

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

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


おすすめ情報