• ベストアンサー

エクセル2010小数点計算#3

先日質問に対する答えをいただきました。 http://okwave.jp/qa/q7568065.html セルA1「1.09」B1「2.00」C1「1.09」D1「2.03」E1「2.03」F1「2.00」の平均が 「2.12」になってしまいます。「2.00」にする為にはどうしたら良いですか? お願いします。

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

  • ベストアンサー
回答No.11

#5です。 2010では計算方法が少し変わったようですね。 小数点誤差をもう少し考えてみました G1セルに =ROUNDDOWN(INT(SUMPRODUCT(INT(A1:F1)*12+MOD(INT(A1:F1*100),100))/COUNT(A1:F1)/12) +MOD(SUMPRODUCT(INT(A1:F1)*12+MOD(INT(A1:F1*100),100))/COUNT(A1:F1),12)/100,2) 小数点誤差をなくすために100倍して整数化しましたが、これでは、完全ではないようです。(for XL2003) よってINTを付加。 MOD(INT(A1:F1*100),100)) #ちなみに、AVERAGE関数の配列計算は、元の値(A1:F1)が一部入力されていない場合に異なる結果が出るので注意が必要です。

cha8393
質問者

お礼

何度もありがとうございました。 おかげさまで解決しました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (10)

回答No.10

入力の方式としてお勧めではないとのご意見もあるようですが、算数の問題としてはちょっと楽しいですよね。 10進数と12進数が混ざっているので、そのまま全体を合計しようとしたりすると、訳分からんことになります。なので、整数部分と小数部分を別々に扱って、それぞれ月数に変換してから合計すれば間違いありませんね。 例えば「1.09」の場合、整数部分は「1」、小数部分は「0.09」です。整数部分の月数は「1×0.12×100=12」、小数部分の月数は「0.09×100=9」です。両者の合計は、「12+9=21」と出ますね。ですから、「1.09」が表す月数をExcelの数式で計算すると、こんな式になります。 =(a1-(1-0.12)*int(a1))*100 で、ここから6つのセルの平均に持っていくのですが、Ctrl+Shift+Enterを押して式を入力するなら、No.8さんの式。そうでないなら、次のようにSUMPRODUCT関数とCOLUMNS関数を使えばいいかと。 =int(sumproduct((a1:f1-(1-0.12)*int(a1:f1))*100)/columns(a1:f1)/12)+mod(sumproduct((a1:f1-(1-0.12)*int(a1:f1))*100)/columns(a1:f1),12)/100 この数式を入力したセルの書式を、小数点第2位まで表示するように設定してください。

cha8393
質問者

お礼

回答ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。
回答No.9

既に多くの回答が出ていますので、これが参考になるか不明ですが、、、、 2ケ年11ケ月を2.11のように入力し、平均値の11.5ケ月を1ケ年=1と表示するのであれば、一つのセルに数式をまとめるのではなくて、わかりやすく、簡単な方法をとられた方が良いのではないでしょうか。 私の使っているアプリの問題なのか、MOD関数と配列を組み合わせて、序数で割りきれるような場合、期待しない値が返ってきています。INT関数を組み込まないと戻り値が使えませんでした。 無理矢理次のような数式を作りました。一応動くようですが、年月日の値が数百ある場合や、位置を変更する場合、平均値の表示方法を変えたい場合など、後での変更や改良を考えると、お薦めできる数式とは言えません。   =INT((SUMPRODUCT((INT(A1;F1)*12))+INT(SUMPRODUCT(MOD(A1;F1,1)*100)))/COUNT(A1;F1)/12) +IF(MOD((SUMPRODUCT((INT(A1;F1)*12))+INT(SUMPRODUCT(MOD(A1;F1,1)*100)))/COUNT(A1;F1),12)>=11.5, 1,ROUND(MOD((SUMPRODUCT((INT(A1;F1)*12))+INT(SUMPRODUCT(MOD(A1;F1,1)*100)))/COUNT(A1;F1),12))/100)   どういう理由なのかわかりませんが、INT(SUMPRODUCT(MOD(A1;F1,1)*100))の部分を、SUMPRODUCT(MOD(A1;F1,1)*100)とすると、私の場合、SUMPRODUCT(MOD(A1;F1,1))が見えないところでおかしくなるようです。 (shift+enterかもしれませんが) こんなことは、一つの式に組み込んでしまったら、何が悪いのかわからなくなります。 簡単な式を作り、計算過程も簡単にチェックできる方法が良いように思います。

cha8393
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.8

>2010では「2.12」となります。 なるほど、面白い現象ですね。 =INT(AVERAGE(INT(A1:F1*100)-INT(A1:F1)*88)/12)+MOD(AVERAGE(INT(A1:F1*100)-INT(A1:F1)*88),12)/100 と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力します。

cha8393
質問者

お礼

回答ありがとうございます。 ROUNDDOWNをつけて2007でも2010でも出来ました。

全文を見る
すると、全ての回答が全文表示されます。
  • KEIS050162
  • ベストアンサー率47% (890/1879)
回答No.7

再び#2です。私が計算したシートの一部を添付します。 ちゃんと平均が2.00となっていますよ。(理屈的にも計算できない訳はないのですが) 1行目 A1~F1 には単に数値が入っている。(黄色のセル) 2行目 A2~F2 に、 =INT(A1)*12+(A1-INT(A1)*100 (緑のセル) ※もちろん計算式中のA1は、B1、C1…と列によって変える G列 G1,G2には単にAVERAGE関数を使って、それぞれのAx~Fxの平均が計算されている。 3行目 A3~F3と、G3 に、 =INT(A2/12)+MOD(A2,12)/100 (水色のセル) ※これも、計算式中のA2は、B2、C2…と列によって変える。 G3で、G2の計算結果を単に変換戻ししているだけ。 これで、2行目のA2~F2には、月数21ヶ月、24ヶ月… が計算され、G2には、平均の24ヶ月が計算される。 3行面のA3~F3は、単に変換を戻しただけなので、1行目のA1~F1の値と同じ数値になる。 で、結果のG3は、G2で計算した平均値の24ヶ月を変換戻しした2.00という値になる。 これで出来なければ、なにか余計な計算処理が入っていると思えるので、確認してみてください。

cha8393
質問者

補足

回答ありがとうございます。 エクセルのバージョンは何ですか? 2007では「2.00」になるのを確認しましたが 2010では「2.12」となります。

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.6

年月をそんな風に入力するシステムは紛らわしいから辞めた方が良いと思いますが、とりあえず…… G1を作業セルとして使用します(A1:F1の合計月数) =INT(INT(SUM(A1:F1))*12+MOD(SUM(A1:F1),1)*100) H1に↓ =INT(G1/72)+MOD(G1/6,12)/100 これでどうでしょう

cha8393
質問者

補足

回答ありがとうございます。 A1からF1全てのセルに数値が入力されるわけではありません。

全文を見る
すると、全ての回答が全文表示されます。
回答No.5

基本的にそのようなシステムになっていることを改めたほうが良いと思う。 一部、割り算の順序を変更した(結果は同じ)。G1セルに =ROUNDDOWN(INT(SUMPRODUCT(INT(A1:F1)*12+MOD(A1:F1*100,100))/COUNT(A1:F1)/12) +MOD(SUMPRODUCT(INT(A1:F1)*12+MOD(A1:F1*100,100))/COUNT(A1:F1),12)/100,2) ポイントは合計月数を出す数式 =SUMPRODUCT(INT(A1:F1)*12+MOD(A1:F1*100,100)) 結果として2.12は計算上出ないはずだが、もう一度確認のこと 小数点誤差を多少は考えたが、原因は不明 添付図のようなことを一つのセルで行っている

cha8393
質問者

お礼

回答ありがとうございます。 「2.12」は「2.00」に出来ないのですね。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

=INT(AVERAGE(A1:F1*100-INT(A1:F1)*88)/12)+MOD(AVERAGE(A1:F1*100-INT(A1:F1)*88),12)/100 と記入し,必ずコントロールキーとシフトキーを押しながらEnterで入力します。

cha8393
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • KEIS050162
  • ベストアンサー率47% (890/1879)
回答No.3

#2です。 最後の再変換が間違ってました。 F3 に = INT(F2/12) + MOD(F2,12) / 100    F2で計算した平均xxヶ月を x.xx歳に再変換する。

cha8393
質問者

お礼

回答ありがとうございます。 やはり、セルA1「1.09」B1「2.00」C1「1.09」D1「2.03」E1「2.03」F1「2.00」の平均が 「2.12」になってしまいます。「

全文を見る
すると、全ての回答が全文表示されます。
  • KEIS050162
  • ベストアンサー率47% (890/1879)
回答No.2

ちょっと前回の回答とやり方が違いますが、 1.09 ⇒ 21ヶ月 という変換と、 21ヶ月 ⇒ 1.09 才 という変換を組み合わせた方がすっきりするかも知れませんね。 A1: 1.09 B1: 2.00 C1:1.09 D1:2.03 E1:2.03 A2からE2に、 =INT(A1)+(A1-INT(A1))*100 xxヶ月に変換する。A2~E2にxxヶ月の変換値を一旦計算しておく。 F2 に、 =AVERAGE(A2:E2) 平均 xxヶ月という数値が出来る。 F3 に = INT(F2/12) + MOD(F2,12) * 100 F2で計算した平均xxヶ月を x.xx歳に再変換する。 泥臭い方法ですが、確実で分かりやすいかと思います。

cha8393
質問者

補足

回答ありがとうございます。 >A2からE2に、 =INT(A1)+(A1-INT(A1))*100 xxヶ月に変換する。A2~E2にxxヶ月の変換値を一旦計算しておく。 =INT(A1)*12+(A1-INT(A1))*100に直して出来ましたが、 セルA1「1.09」B1「2.00」C1「1.09」D1「2.03」E1「2.03」F1「2.00」の平均が 「2.12」になってしまいます。

全文を見る
すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

>セルA1「1.09」B1「2.00」C1「1.09」D1「2.03」E1「2.03」F1「2.00」の平均が 「2.12」になってしまいます。 そもそも、これは本当でしょうか。 電卓で計算したところ、 1.7066666.... になりました。 >「2.00」にする為にはどうしたら良いですか? 小数第一位で四捨五入したいのでしょうか?それとも、 小数第一位で切り捨てたいのでしょうか?

cha8393
質問者

補足

回答ありがとうございます。 小数点第2位まで使用して、年齢の計算(アベレージ)を出したいのです。 1ヶ月を0.01として入力し、1歳を1.00と入力します。 例A:5.03(5歳3ヶ月)+5.04(5歳4ヶ月)+5.05(5歳5ヶ月)=アベレージ(5.04) 例B:5.03(5歳3ヶ月)+4.11(4歳11ヶ月)=アベレージ(5.01) それぞれのアベレージを計算したいです。 今使用している関数は(セルA1:C1としましょう) =ROUNDDOWN(INT(SUMPRODUCT(INT(A1:C1)*12+MOD(A1:C1*100,100))/12/COUNT(A1:C1)) +MOD(SUMPRODUCT(INT(A1:C1)*12+MOD(A1:C1*100,100))/COUNT(A1:C1),12)/100,2) です。たぶん小数点第2位が、ちょうど「.12」の時だと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelでの小数点の計算

    小数点以下の部分で計算が上手くいかず困っています。 Excelのバージョンは2007です。 そして、各セルの内容は次の通りです。 A1:8347 B1:4.04 C1:8.66 D1:B1+C1 E1:D1-(3.5+8.3) F1:ROUNDDOWN(A1*E1,1) F1のセルの答えは小数点第2位で切り捨てしなければなりません。 そうすると、答え変わってしまい、正しい結果になってくれません。 この場合の対処法があれば教えてください。

  • エクセルで計算

    例えば、 セルA1に「3」 セルB1に「+」 セルC1に「4」 セルD1に「-」 セルE1に「2」 と入力し、 セルF1に答えの「5」と表示させる方法はありませんか?

  • エクセルで小数点を含む合計と()のつけかた

    エクセルで A=1.5 B=2 C=3.5 D=0.5 E(合計)=(7.5) AからDのセルに数値を入力して、Eのセルに合計を出し、その合計された数値を()で囲みたいです。 宜しくお願いします。

  • エクセルで計算後の値で検索したい

    教えてください。 たとえば A1セルに1 B1セルに2 C1セルに=A1+B1という数式を入れたら3と表示されます D1に=VLOOKUP(C1,E1:F10,2,FALSE)としたらN/Aとなります E1は1、E2は2、E3は3、E4は4・・・・・・ F1は11、F2は12、F3は13、F4は14・・・・・ C1セルの3という値でE3の3を検索しF3の13を表示させることはできないでしょうか? アドバイスお願いします。

  • エクセルに以下のような複雑な計算をさせたいです。

    エクセルに以下のような条件の計算をさせたいです。 「2a , 3b , 5c , 6d , 8e , 10f」 a+b+c+d+e+fが上のどれよりも小さくなる場合の、 a,b,c,d,e,fの数字の組みわせで最も小さいものを求めたいです。 2a ≧ a+b+c+d+e+f 3b ≧ a+b+c+d+e+f 5c ≧ a+b+c+d+e+f 6d ≧ a+b+c+d+e+f 8e ≧ a+b+c+d+e+f 10f ≧ a+b+c+d+e+f (ただし、a,b,c,d,e,fは正の数) ※分かりやすいように、これらの数字は適当に入れたので、答えが無いかと思います。 実際は別の数字に置き換えます。 ※また、コンピュータが無限に計算し続けることを防ぐために上限を決めてもいいです 関数かマクロで計算させる方法を教えて下さい。 わかりやすくなるようにシンプルに説明しましたが、 実際は最大13組まで計算することになり、 自力でも計算してみましたが、とてつもなく時間がかかりました。 出来ればコンピューターに計算させたいと思い質問しました。

  • 1つのセル内で最終的にGの答えを出したいのですが、どのように計算すれば

    1つのセル内で最終的にGの答えを出したいのですが、どのように計算すれば良いでしょうか? (A+B)×C=D×E-F=G 各アルファベットには任意の数字が入ります。 (A+B)×CからDを導き出し、Dに対して×E-Fを行い最終的にGを出したいのです。 (A+B)×C=Dに対して真横のセルでD×E-Fは出せるのですが、 1つのセル内で解答を出したいのです。 ご教授よろしくお願いします。

  • エクセルの条件範囲と合致したもの

    エクセルの条件範囲と合致したもの こんにちは。http://okwave.jp/qa/q5924759.htmlで質問していたのですが、 うまくいかないので、教えてください。 たとえば、同じシートで、 A1/B1/C1/D1・・・・・・←セル列 (スラッシュはセルだとします) A /1 /A /1 B /2 /B /2 D /3 /C E /4 /D /3 G /5 /E /4 I /6 /F / このように、列同士(A1の列とC1の列)が同じものがあった場合、A1の隣のセルであるB1のセルの数字をA4のセルに記載したい場合の数式を教えていただきたいです。D1に新たに追加されたものに関しては空白をしたいのです。 =IF(COUNTIF($A$1:$A$6,$C$1:$C$6)=0," ",IF(COUNTIF($A$1:$A$6,$C$1:$C$6)=1,B1)) この式を考えましたが、D1の列のDの部分の数字が"4"と記載されてしまい、本来なら"3"を 記載したいのですが、ずれてしまいます。 たぶん、条件の範囲のものとIFを合体させた数式になるのかなって思うのですが、 もし数式を教えていただければ幸いです。 何度も質問してすみません。。。よろしくお願いいたします。

  • フォルダやファイルの並び順について

    以前の質問(http://okwave.jp/qa/q8851306.html)では、うまく意図が伝わらなかったため、再度質問させて頂きます。 例えば、A、B、Cというフォルダと、D、Eというファイルと、Fというフォルダのショートカットがあるとします。 名前順(昇順)で並べ替えると、 A B C D E F となります。 そうではなく、 A B C F D E というようにできないでしょうか。

  • エクセル2007で%の平均値を求めたいのですが、うまくできません。

    エクセル2007で%の平均値を求めたいのですが、うまくできません。 先日下記の様な質問をさせて頂いたのですが、もう少し質問したいことがあったのに間違えて解決済にしてしまいました。 どなたか分かる方がいらっしゃいましたら教えてください。    A    B    C    D    E    F    G     H 1 目標  6.44%  4.50%  3.77%  5.15%  2.66%  2.79%  式を入れたいセル 2 実績  5.07%  6.00%  4.85%                 A2~G2の平均値 A1~G1は、=(F3/G6)みたいな数式が入っていて、%で表示されています。 B2~G2は、最初は空欄で毎月B、C、D、E、Fと一つずつ%が入っていきます。 上記で、H1のセルに、下記の様な結果を表示できる式を入れたいのですが、何かいい方法はないでしょうか? ・B2~G2が空白の時はB1~G1の平均値 ・B2にだけ数字が入っていてC2~G2が空白の時はB1の数字 ・B2~C2に数字が入っていてD2~G2が空白の時はB1~C1の平均値 ・B2~D2に数字が入っていてE2~G2が空白の時はB1~D1の平均値 ・B2~E2に数字が入っていてF2~G2が空白の時はB1~E1の平均値 ・B2~F2に数字が入っていてG2だけが空白の時はB1~F1の平均値 ・B2~G2全てに数字が入っている時はB1~G1の平均値 という質問に対して、 [H1]=AVERAGE(B1:INDEX(B1:G1,COUNT(B2:G2))) という式を教えて頂いたところ、うまくいきました。 半期分はこれでOKだったのですが、1年分だとHに半期の平均のセルが入るため、うまく表示できません。 ・B~Gが前期、Hが前期の平均 ・I~Nが後期、Oが後期の平均 さらに、Pに全期の平均を入れたい場合はどのようにしたらよいのでしょうか? [P1]=AVERAGE(B1:INDEX(B1:N1,COUNT(B2:G2,I2:N2))) にすると、Hのセルも入ってしまうため、後期に数字が入ると平均値の表示が1つずつずれてしまいます。 何回も申し訳ないのですが、どうぞよろしくお願いいたします。

  • エクセル2007で%の平均値を求めたいのですが、うまくできません。

    エクセル2007で%の平均値を求めたいのですが、うまくできません。 AVERAGEやIFをいろいろ組み合わせてみたのですが、どうしても分からないので教えてください。   A   B    C    D    E    F    G   H 1 目標  6.44%  4.50%  3.77%  5.15%  2.66%  2.79%  式を入れたいセル 2 実績  5.07%  6.00%  4.85%                 A2~G2の平均値 A1~G1は、=(F3/G6)みたいな数式が入っていて、%で表示されています。 B2~G2は、最初は空欄で毎月B、C、D、E、Fと一つずつ%が入っていきます。 上記で、H1のセルに、下記の様な結果を表示できる式を入れたいのですが、何かいい方法はないでしょうか? ・B2~G2が空白の時はB1~G1の平均値 ・B2にだけ数字が入っていてC2~G2が空白の時はB1の数字 ・B2~C2に数字が入っていてD2~G2が空白の時はB1~C1の平均値 ・B2~D2に数字が入っていてE2~G2が空白の時はB1~D1の平均値 ・B2~E2に数字が入っていてF2~G2が空白の時はB1~E1の平均値 ・B2~F2に数字が入っていてG2だけが空白の時はB1~F1の平均値 ・B2~G2全てに数字が入っている時はB1~G1の平均値 どうかよろしくお願いします。

専門家に質問してみよう