• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL2010のAVERAGE関数について)

EXCEL2010のAVERAGE関数とVBAでの平均値の違い

このQ&Aのポイント
  • EXCEL2010のAVERAGE関数とVBAのApplication.Averageを使って算出した平均値が異なる現象について説明します。
  • データは小数点以下20桁の数値で、小数点第8位までは一致していますが、以降の桁で値が異なります。
  • 平均値の差が誤差範囲内であるかどうか、真の値はどちらかについて教えてください。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

誤差でもバグでもなく、人為的なミスでしょう。 例えば  A1:0.00000138786111098443  A2:0.00000137878257235606  A3:0.00000138192909756498 とデータがあるとして、これらの平均を「Application.Average」で求めるなら   Range("B1") = Application.Average(Range("A1:A3"))   Range("B1") = Application.Average(Range("A1", "A3")) と書くか、もしくは   Range("B1") = Application.Average(Range("A1"), Range("A2"), Range("A3")) くらいで書いてやるのが通例です。 ちなみに、上記3通りのどれでもB1セルに「0.00000138285759363516」が返ってきます。 #1さんのご指摘通り、上記の例で言うとA1セルとA3セルの平均は 「0.00000138489510427470」が返ってきますから、   Range("B2") = Application.Average(Range("A1"), Range("A3")) のような書き方をしているんじゃないかなぁと「推測」できます。 と言うことで。 ご自身で書いたコードを冷静に読み返してみてくださいませ。

CookieMonster08
質問者

お礼

tsubuyuki様 ご回答ありがとうございます。 ご指摘の通り、私のミスでした。(恥ずかしいです。。。) おっしゃる通り、 Range("B2") = Application.Average(Range("A1"), Range("A3")) で、作っていました。 ご教授頂いた通り、 Range("B1") = Application.Average(Range("A1", "A3")) で、同じ結果になりました。 ご指摘ありがとうございました!

その他の回答 (1)

回答No.1

VBA側のなんらかのバグではないでしょうか? 0.00000138786111098443 0.00000137878257235606 0.00000138192909756498 上記の平均値は、セル上、VBA上共に、 0.00000138285759363516 になります。 ちなみに、最初と最後の値の平均値は 0.00000138489510427470 になりました。 質問にあるVBAで出した答え 0.00000138489510427471 とほぼ同じ値です。

CookieMonster08
質問者

お礼

ny123456789様 ご回答ありがとうございます。 ご指摘の通りVBAでAVERAGE関数を使う際に構文の使い方が間違っていました。 修正したところ、同じ結果になりました。 何とも恥ずかしいミスでした。 ご指摘ありがとうございました!

関連するQ&A