• ベストアンサー

exelの計算式について

エクセルの計算式を教えてください。 任意のセル(A1)の値の1位を切り捨て、 さらに10位が50未満の場合も切り捨てるのは どのような式になるのでしょうか。 よろしくお願いします。 例) 1981→1980 1949→1900

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! こういうことでしょうか? A1セルからデータがありB1セル以降に表示させるとします。 B1セルに =IF(INT(MOD(A1,100)/10)<5,ROUNDDOWN(A1,-2),ROUNDDOWN(A1,-1)) としてオートフィルで下へコピーではどうでしょうか? (エラー処理はしていません) 外していたらごめんなさいね。m(__)m

unitty
質問者

お礼

ありがとうございます。大変勉強になりました。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

=IF(A1="","",ROUNDDOWN(A1,IF(MOD(A1,100)<50,-2,-1))) などのように。

unitty
質問者

お礼

ありがとうございます。このような方法もあるのですね。勉強させていただきました。

  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.3

まず、四捨五入には ROUND 関数を使います。 http://excel.onushi.com/function/round.htm 切り捨てには、FLOOR 関数を使います。 http://excel.onushi.com/function/floor.htm 似ている関数ですが、2つめの数の指定方法が違います…。 =ROUND(A1, 0) …小数点0ケタにします、つまり整数の近い方に四捨五入します。 =ROUND(A1, 2) …小数点2ケタにします、つまり小数点3桁目を四捨五入します。 ここで、2番目のパラメータにマイナスを使うと、順に1の位を四捨五入・10の位を四捨五入、と言うように使うことが出来ます。 =ROUND(A1, -1) …1の位を四捨五入します。 =ROUND(A1, -2) …10の位を四捨五入します。 これに、余りを求める関数 MOD と、条件判断のif関数を組み合わせると、希望の式を作れます。 =IF( MOD(A1,100)<50, FLOOR(A1, 100), ROUND(A1, -1) ) でも、ところで、1949→1900 にしたいのはわかりましたが、2011→2000 というようにもしたいんでしょうか? 「10位が50未満」という条件ではそうなってしまいますよ。 1950未満は、2桁切り捨て、1950以降は1桁目四捨五入、だと、このようになります。 =IF( A<1950, FLOOR(A1, 100), ROUND(A1, -1) )

unitty
質問者

お礼

ありがとうございます。ほとんどの場合はうまくいくのですが、9499が9500になってしまいました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

A列 B列 1981 1980 1949 1900 1849 1800 1730 1700 1963 1960 1972 1970 1976 1970 B2 の式は =IF(MOD(A2,100)<50,FLOOR(A2,50),ROUNDDOWN(A2,-1)) 多様なデータでチェックし、反する結果が出たらこの回答を無視してください。

unitty
質問者

お礼

ありがとうございます。大変勉強になりました。

関連するQ&A