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

エクセルで四捨五入をする際、通常だったらround関数を使うと思いますが、諸事情によりround関数以外で計算式を組む必要があります。例えばif関数などを使って数式を組むことって可能でしょうか。詳しい方教えてください。

質問者からの補足コメント

  • ありがとうございます。
    小数点以下第一位を四捨五入する場合は、どのような計算になるでしょうか。
    例えば、
    666.5432 → 667
    の計算はどのようになるでしょうか。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/08/12 16:03
  • はい、計算結果として四捨五入されている必要があります。

    小数点以下第一位を四捨五入する場合は、どのような計算になるでしょうか。
    例えば、
    666.5432 → 667
    の計算はどのようになるでしょうか。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/08/12 16:04
  • Int 関数を知りませんでした。教えて頂きありがとうございます。この方法で出来ますね。

    ちなみに、int を使わず、If関数と四則演算のみで表現するのは難しいでしょうか??

    No.5の回答に寄せられた補足コメントです。 補足日時:2022/08/12 16:30
  • Int 関数を知りませんでした。教えて頂き大変助かりました。

    ちなみに、int を使わず、If関数と四則演算のみで表現するのは難しいでしょうか?もしそのような方法があれば知りたいのです。

    No.4の回答に寄せられた補足コメントです。 補足日時:2022/08/12 16:32

A 回答 (10件)

IF関数が使えて他の関数が使えない環境がちょっと意味がわからないのですが…


何か特殊な事情がおありならそれも書いてもらえると的確な代案が出るかも知れません。

どういったデータを扱っているかの詳細がわかりませんが、データの桁数が揃っていて全て小数点第一位で四捨五入し整数化するので良ければ全体を選択してから「小数点以下の桁数を減らす」ボタン(.00→.0)を押す(桁数に合わせた回数)と見た目は小数点第一位で四捨五入した数値になります。

そして、範囲をコピーし「クリップボード経由で」同じ場所に貼り付けると見た目のデータがそのまま中身のデータになります。

データの桁数が違っていても、まぁセルごとに小数点以下の桁数を設定していけばいいのでやってやれないことはないかなとは思います。
データの中身は変えちゃいけないとか関数じゃないといけないとかの制約があるなら他の関数案を活用ください。
    • good
    • 0

modを使えば

    • good
    • 1

整数に四捨五入する場合。


元の値を x とする。
x を 整数に切り捨てた値を n 切り捨てられた小数を d とすると
x = n + d
四捨五入した値 z は
・d<0.5なら z=n
・そうでないなら z=n+1
if関数風にすれば
z=n+IF(d<0.5,0,1)

※小数2位等別の場所で四捨五入したい場合は、 10倍,100倍等で四捨五入したい桁が整数になるように合わせて上記計算の後に、1/10,1/100等で元の桁に戻す。


で、 x を n + d に分けるには、どうしてもINT,FLOOR等の関数が必要で、四則演算だけでは無理です。



IF を無限に書けるのなら
... , IF( x<0.5 , 0 ,IF( x<1.5 ,1 , IF( x<2.5, 2, ......
なんてのがありますが
    • good
    • 1

こんばんは。



諸事情が分かりませんが、If関数と四則演算のみでは、無理かと思います。

Int以外にも、下記の様な関数を使えば、手間が掛かりますが可能だと思います。 ただ、If関数だけでは、無理だと思います。

Int、Floor、CEILING、Modなど。
    • good
    • 1

>>int を使わず、If関数と四則演算のみで表現するのは難しいでしょうか?



エクセルはセルを整数型にしても、中身は小数データなので、出来ません。
vbaなどのプログラムを使えば出来ます。

int関数やround関数は、中身はプログラムだから出来るのです。
    • good
    • 1

『666.5432』


小数第1位を四捨五入するなら・・・
四捨五入する桁を小数第1位にする。
元から小数第1位になっているので倍にする必要なし。『666.5432』
0.5を足して『667.0432』
整数部分を抜き出して『667』
桁を元に戻してやる…がもともと倍にしてないのでそのまま。『667』

A1に「666.5432」があるなら、四捨五入前の数値があれば、
=INT(A1+0.5)
でできる。

INT関数、調べてみました?


先のNo.2の回答で式の中で「A2」って書いてたけど「A1」だね。
この回答への補足あり
    • good
    • 1

どの部分を四捨五入するかでやり方変わるでしょ?



整数で1桁目を四捨五入するなら
5を足して、結果を10で割って、整数部分×10
=int((a1+5)/10)*10

小数で、小数点第一位で四捨五入するなら
0.5を足して、結果を10倍して、整数部分×10、÷10
=int((A1+0.5))*10/10

小数で、小数点第一位で四捨五入するなら
=int((A1+0.05)*10)

ジックリ考えて下さい。
この回答への補足あり
    • good
    • 1

セルで表示する数字の桁数を指定すれば良いと思います。



> 諸事情によりround関数以外で計算式を組む必要があります。
そんなことよりも、諸事情とは何でしょうか。気になります。
    • good
    • 1

四捨五入するしたい桁を小数第1位ににして


0.5を足したのち、
整数部分を抜き出して、
桁を元に戻してやる。

『1.245』《3.381》
小数第2位を四捨五入するなら・・・
10倍して『12.45』《33.81》
0.5を足して『12.95』《34.31》
整数部分を抜き出して『12』《34》
桁を元に戻してやる(10倍たので10で割る)『1.2』《3.4》

みたいな方法なら、
A1に四捨五入前の数値があれば、
=INT(A2*10+0.5)/10
でできる。
この回答への補足あり
    • good
    • 1

・どこ(例えば小数点以下)を四捨五入するんですか?


・見た目に四捨五入されていればいいのではなく、数値として四捨五入されている必要があるということですよね?
この回答への補足あり
    • good
    • 1

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