- ベストアンサー
Excelの関数で○捨×入?
Excelの関数を使用し、一つのセルで「2捨3入、7捨8入」というのでしょうか、「1の位が2以下のときは0に、3から7の時は5に、8以上の時は繰り上げ」といったことはできるでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.2の補足に対する回答です。 もともとのご質問、 「1の位が2以下のときは0に、3から7の時は5に、8以上の時は繰り上げ(10に)」 の中にある数字を”2倍”してみると、 『1の位が4以下のときは0に、6から14の時は10に、16以上の時は繰り上げ(20に)』 となります。これって、四捨五入と同じですね。 つまり元の値を2倍してから四捨五入(ROUND関数が使えますね)すると、 {0,10,20,,,,}という10刻みの数字に変換され、 その変換された結果を2で割ることで、 {0, 5,10,,,,}ってという5刻みの結果が出るってわけです。 つまり[元の値]を[2倍]してから[四捨五入]して最後に[2で割れ]ば良いわけです 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,,,,=[元の値] ↓ 0, 2, 4, 6, 8,10,12,14,16,18,20,,,,=[×2倍] ↓ 0, 0, 0,10,10,10,10,10,20,20,20,,,,=[四捨五入] ↓ 0, 0, 0, 5, 5, 5, 5, 5,10,10,10,,,,=[÷2] これを計算式で表すと、No.2で回答した、 =ROUND(A1*2,-1)/2 になります。 こんな説明でお分かりになりましたでしょうか。 説明にはちょっと自信なし....^_^;
その他の回答 (5)
- uko
- ベストアンサー率57% (4/7)
No.5の回答を訂正させてください。 =IF(--RIGHT(A1,1)<3,ROUNDDOWN(A1,-1),IF(--RIGHT(A1,1)>7,ROUNDUP(A1,-1),CEILING(A1,10)-5)) かな?
- uko
- ベストアンサー率57% (4/7)
No.4の補足に対する回答です。 > もし「1の位が3以下のときは0に、4から6の時は5に、7以上の時は > 繰り上げ(10に)」 なんてことになるとどう考えればいいのでしょうか? どう考えればいいんでしょうね。(笑) ご質問のように様々なパターンに対応するとなると、なかなか難しいです。 IF文を使用するのが一番わかりやすかったです。 =IF(AND(--RIGHT(A1,1)>=3,--RIGHT(A1,1)<=7),ROUND(A1*2,-1)/2,ROUND(A1,-1)) 一の位が3~7の場合は、前に回答した方法で一の位を5とする四捨五入、 それ以外のときは、普通に四捨五入。といったように場合分けしてみました。 上の例は【3から7の時は5にする場合】ですので、【4から6の時は5にする場合】に対応する際は、下の例のようにAND文の中の数字を変更してください。 =IF(AND(--RIGHT(A1,1)>=4,--RIGHT(A1,1)<=6),ROUND(A1*2,-1)/2,ROUND(A1,-1)) 注意事項としてはANDの範囲に必ず5が含まれるようにしないといけないってことですかね。
- imogasi
- ベストアンサー率27% (4737/17069)
もっと極く簡単にA列に数値が入っているとして B列に「=INT(A1+c)」でいかがですか。 cには四捨五入では0.5を使いますが、1より○入の 数を引いた数、0.1、0.2、0.3・・・のどれか1つを適当に選べば良い。小数点第2位の四捨五入等なら 0.002とかを使えば良い。値が正の数とかの 制約にはご注意を。 A列に値を0.1(あるいは0.001)刻みで入れて、上記関数を複写し結果を確認してください。 1例として「=INT(A7+0.7)」。
- uko
- ベストアンサー率57% (4/7)
スイマセン。再登場ですが。 =ROUND(A1*2,-1)/2 これでよかったですね。
補足
ありがとうございます。 できるにはできたのですが、この式ができた手順を教えて下さい。 なぜ「2」をかけているのでしょうか?
- uko
- ベストアンサー率57% (4/7)
A1のセルの値を○捨×入するとして、 正の数だけなら、 =IF(A1<2,0,CEILING(A1-2,5)) 正負両方なら、 =IF(AND(A1<2,A1>-2),0,IF(A1<0,-CEILING(-A1-2,5),CEILING(A1-2,5))) でいいでしょうか。
補足
おー!!ありがとうございます。バッチリ理解できました。 申し訳ないですがさらにややこしい質問を・・・ 今回の質問の場合、運良く2倍で四捨五入ができるようになりましたが、もし「1の位が3以下のときは0に、4から6の時は5に、7以上の時は繰り上げ(10に)」 なんてことになるとどう考えればいいのでしょうか? すみません、毎回変な質問してしまってm(__)m