• ベストアンサー

エクセルで

次のような表を作成したいと思います。 10以下=0 10~19=5を足す 20~29=10を足す 30~39=15を足す 40~49=20を足す ・ ・ ・ 90~99=45を足す 例)A1に33と入力した場合B1のセルに15を足された48といった数値が答えとして出るように、またA2に13と入力した時はB2に18が返るようにといったことがしたいのですが…10以下はそのままの値(実際は0を足した)が返るようにしたいのです。 これらの数値範囲内の場合各数値を足した合計が出るようにしたいのですが1つの式にまとめることはできるでしょうか? 説明がうまくできませんが分かる方は宜しくお願いします。

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

  • ベストアンサー
  • dober-o
  • ベストアンサー率59% (260/439)
回答No.1

セルB1に =INT(A1/10)*5+A1 を代入 そのままB2以下のセルにコピー でどうでしょう

minokan
質問者

お礼

回答ありがとうございます。 自分のやりたいことはこの数式でできました。 本当勉強になりました。 INTを使うのは自分では全く頭に無かったです。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 まず、数値が、A1:A10 にあるとします。 B列の 個々の計算は、 =ROUNDDOWN(A1,-1)/2+A1 合計は、A11: =SUMPRODUCT(ROUNDDOWN(A1:A10,-1)/2+A1:A10) ですが、 //「これらの数値範囲内の場合各数値を足した合計」// というご質問には、2つの意味があると思います。 ○1つは、これらの数値範囲内の場合のみ計算に入れる =SUM(IF((A1:A10>0)*(A1:A10<100),ROUNDDOWN(A1:A10,-1)/2+A1:A10,0)) 配列数式ですから、一旦入力したら、目的の式にF2を押して、『ShiftとCtrlを押しながらEnterキー』を押します。 ○もう1つは、これらの数値範囲内の場合に、各数値を足したけれども、それ以外の数値は、足さない。  =SUM(IF((A1:A10>0)*(A1:A10<100),ROUNDDOWN(A1:A10,-1)/2+A1:A10,A1:A10)) 上記と同様に、配列の確定が必要です。

minokan
質問者

お礼

回答ありがとうございます。 自分のやりたいことはこの数式でできました。 本当勉強になりました。 自分もIF式で作っていたのですがもっと簡単にまとめれないかと思ったので…。 いろいろな方法があるのですね。ありがとうございました!

回答No.3

   A  B 1   8  甲 2  15 3  64 4  93 5  乙 上記のような場合ですが、 B列にA列各セルに対応する結果を出すのでしたら、甲に  =INT(A1/10)*5+A1 で下方にコピー。 これらの集計値を出すのでしたら、乙に  =SUMPRODUCT(INT(A1:A6/10)*5+A1:A6) で [Enter] または  =SUM(INT(A1:A6/10)*5+A1:A6) で [Ctrl]と[Shift]を押しながら[Enter]

minokan
質問者

お礼

回答ありがとうございます。 自分のやりたいことはこの数式でできました。 本当勉強になりました。 >[Ctrl]と[Shift]を押しながら[Enter] 昔覚えたのに忘れてました。

  • ok2inaba
  • ベストアンサー率38% (47/122)
回答No.2

 すべてを計算ですませるなら…B1に以下の式 =INT(A1/10,0)*5+A1  でいいのではないでしょうか?  対象値の範囲にもっと柔軟に対応するには、切り捨ての桁数を管理できる =ROUNDDOWN(A1/10,0)*5+A1  というパターンもあります。  あと、もっと複雑なパターンに対応するときは、すべてを式で計算するのではなく、俗に「テーブル引き」と呼ばれる方法がいいかと思います。(テーブルとは英語で表のこと) 10 0 20 5 30 15 :  という表を別なところ(目立たないところ、あるいはほかのシート)に作っておき、検索関数を使って、その表から比較値に対応する加算値を検索するようにすると、もっと不規則なパターンにも簡単に対応できます。

minokan
質問者

お礼

回答ありがとうございます。 自分のやりたいことはこの数式でできました。 本当勉強になりました。 INTを使うのは自分では全く頭に無かったです。 テーブル引きも使ってみようと思います。

関連するQ&A