• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelの質問です)

Excelでデータの割合を計算し、差を取り、2乗して合計する方法

このQ&Aのポイント
  • Excelを使用して、100個の要素を持つ1つ目のデータとして1, 2, 3, 4, 5...があります。それぞれの要素を合計で全体で割ります。次に、100個の要素を持つ2つ目のデータとして101, 102, 103...があり、同じように処理を行います。そして、2つのデータの要素ごとに差を取り、その差を2乗します。最後に、それらの合計を計算します。
  • この処理をExcelで行う際には、1つ目のデータと2つ目のデータの2つのデータ列と結果を1つのセルにまとめることができます。
  • この方法を使用すると、Excelを使ってデータの割合を計算し、要素ごとの差を取り、2乗して合計することができます。

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

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

そうですね・・・ 50要素のデータが50列,A列からAX列まであるとして,その右側BA列からCX列,DA列からEX列,FA列からGX列まで利用可能です。100行から1000行まで程度のデータ量でしたら,計算負荷もどうという事はありません。 仮にA列が基準データ(1,2,3の列),B列から実測値のようなものだとして,B列を計算する数式をBA列に1列作成すれば残り48列は単純にコピーするだけのお話です。 またシート2,3,4に,立体的に展開していくような方法もありそうです。中間処理は裏シートに回し,キモになる計算結果だけ表に戻すような細工をしてみるのでも使いやすいかもしれません。 何て言うか,「やりたくない」と思っている時には「こんなに大変な理由」を次々挙げてやらずに済ませようとするのはとても容易です。 その全く裏返しで,「こうすれば良い」と思っている時には「そんなのどうとでもなりますよ」と言ってのけてしまうのもまた容易なお話という事なんですね。 とは言え現実的には,最初はジミチ-で確実な計算積み上げと「正体不明の専用関数」を併用し,十分にプロセスが検証できた後に例えば100行目以降の追加データに対しては専用関数だけで合理化するといった具合に進行していくと思います。

mottyomettyo
質問者

お礼

回答ありがとうございます。 >またシート2,3,4に,立体的に展開していくような方法もありそうです。中間処理は裏 >シートに回し,キモになる計算結果だけ表に戻すような細工をしてみるのでも使いやすいか >もしれません。 教えてくださったとおり中間処理を裏に回すとページ全体が見やすく簡単に拡張できそうなので早速やってみたいと思います。 >最初はジミチ-で確実な計算積み上げと「正体不明の専用関数」を併用し,十分にプロセス >が検証できた後に例えば100行目以降の追加データに対しては専用関数だけで合理化する >といった具合に進行していくと思います。 何度も繰り返してしっかりと確かめて使ってみようと思います。 回答ありがとうございました!

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

その他の回答 (3)

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

=SUMXMY2(A1:A100/SUM(A:A),B1:B100/SUM(B:B)) ですね。 #余談ですが こちらでも昨日のご相談でSUMPRODUCT()^2では合計の二乗であって二乗和(SUMSQ)と違いますよと投稿しようとして,既にクローズされていました SUMSQ/SUM^2 が確かに一番簡単です。無理すると =SUMSQ(INDEX(A1:A100/SUM(A:A),)) などのようになってしまいました。SUMSQ関数が少しバグってるぽいです。 #余談ですが >結果の1つのセルだけ表したい まさに昨日のやり取りがそうでしたが,そうやって無理に詰め込むと,検算も出来ず間違いの気付きもない愚かな(というのが言い過ぎなら危険な)アプローチです。 列を追加し計算を積み上げるジミチーな計算手順を強く推奨します。

mottyomettyo
質問者

お礼

完結でわかりやすい回答ありがとうございます。 前回の回答ですが確かに間違っていたようです。 ご指摘ありがとうございます。 >まさに昨日のやり取りがそうでしたが,そうやって無理に詰め込むと, >検算も出来ず間違いの気付きもない愚かな >(というのが言い過ぎなら危険な)アプローチです。 >列を追加し計算を積み上げるジミチーな計算手順を強く推奨します。 このことなのですが目的としては50個の要素を持つ入力データが100 以上あり、いちいち計算していたら膨大な量になってしまう上に、 どんどんデータを追加することを考えているため面倒なことになると思い今回のような 質問をさせていただきました。 なにかよい方法はないでしょうか?

すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 今仮に、1つ目のデータがA1~A100に、2つ目のデータがB1~B100に並んでいるものとした場合、次の様な関数で求める事が出来ます。 =SUMPRODUCT(($A$1:$A$100/SUM($A$1:$A$100)-$B$1:$B$100/SUM($B$1:$B$100))^2)  只、統計関数等を使用した、もっとスマートな方法があるかも知れませんので、他の回答が投稿されるまで、様子を見られる事を御勧め致します。

mottyomettyo
質問者

お礼

前回の質問とともに回答していただきありがとうございます。 さっそく入力してみたところ期待通りのもとができました! せっかく答えをいただいたのですが助言していただいた通り しばらく待ってみたいと思います。

すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 すいません、こちらの質問をされた方だと思いますが、  QNo.6742157 excelの質問です   http://okwave.jp/qa/q6742157.html  上記の御質問に対して、計算の負荷が少ない方法を回答しようとしたのですが、投稿前に質問が締め切られてしまい、投稿する事が出来なかったため、失礼ながら、こちらに、上記の御質問に対する回答を投稿させて下さい。  入力データがA列にあるものとした場合、各数値の2乗を、合計値の2乗で割ったものの合計を求める関数の一例は、次の様なものがあります。 =SUMSQ(A:A)/SUM(A:A)^2

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