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乗して合計することができます。
回答を見る
  • ベストアンサー

excelの質問です

excelで次のようなことを行いたいと思っています。 1)100個の要素をもつ1つ目のデータとして1,2,3,4,5・・・・があるとします。 2)その入力データのそれぞれを合計で全てを割ります   1/(1+2+3+・・・)    2/(1+2+3+・・・)    3/(1+2+3+・・・) ・・・・ 3)100個の要素をもつ2つ目のデータとして101、102,103・・・・があるとし、   1つ目のデータと同じように処理を行います 4)2つのデータの要素の1つ目、2つ目、3つ目・・・でそれぞれの差をとります   {101 / (101 + 102 + 103・・・) } - {1/(1+2+3+・・・)}   {102 / (101 + 102 + 103・・・) } - {2/(1+2+3+・・・)} :                 :   3)それらをそれぞれ2乗します   {101 / (101 + 102 + 103・・・) } - {1/(1+2+3+・・・)} ^ 2   {102 / (101 + 102 + 103・・・) } - {2/(1+2+3+・・・)} ^ 2 :                :   4)その合計をとります   {101 / (101 + 102 + 103・・・) } - {1/(1+2+3+・・・)}^ 2 +   {102 / (101 + 102 + 103・・・) } - {2/(1+2+3+・・・)}^ 2 :                :   このことを1つ目のデータ、2つ目のデータの2つのデータ列と結果の1つのセルだけ表したいのです。 回答お願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答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/7940)
回答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

関連するQ&A

  • excelの質問です

    次のような動作をエクセルで行いたいのです。 1)入力データとして1,2,3,4,5があるとします。 2)その入力データの合計である15で全てを割ります   1/15 2/15 3/15 4/15 5/15 3)それらを2乗します   (1/15)^2 (2/15)^2 ・・・ 4)その合計をとります    (1/15)^2 + (2/15)^2 + ・・・ このことを添付画像のように入力データ1列と結果の1つのセルだけ表したいのです。 中身は長くなっても構いません。 回答お願いします。

  • エクセル2000で質問です。

    エクセル2000を使用しています。 ある列に○又は×のいずれかが入力されています。 その列の一番下のセルに○が入力されているセルの 合計を出したいのですがどうすれば良いのでしょうか?

  • エクセルについて質問します。

    エクセルについて質問します。 会社の勤務表を作りたいのですが、Aの列に曜日,B列からそれ以降の列(たとえば最後の列がK列とします)は人の名前を入れ、最後の列、K列に一日にすべての人が働いた合計時間を入れたい場合、ひとつのセルに9:00-18:00と入力しても、合計が出せません この場合セルを分けて、出勤時間と退社時間を入力すべきでしょうか? またもっと効率が良いやり方あれば教えてください。

  • Excelでの関数の使い方

    Excelに関する質問です B列にデータがあるとき A列の任意の位置に「1」を打ち込みます この上で 『Aのセルが1になっているところのBのセルの値のみを合計し、その合計した値をセルC1から引く』 この処理を行うときに、『』内の操作を一つの式でやる方法はありませんでしょうか つまり、セルC1で「=……」という式を立てることで『』内の処理を行うことは可能でしょうか 出来れば、どんな式を使えばこの操作が出来るのかご教授願いたく存じます。 なお、「ヘルプの中から自分で探せ」や、「google先生に聞け」、「私は知らない」 などの回答は控えていただきますようお願いします。

  • エクセルの関数についての質問です

    エクセル2010で A1のセルに「○」が入力されると +3 A2・A3・A4 のセルはどこか一箇所にでも○が入れば、1を足します。 二箇所、三箇所に入っても 1しか足しません。 その合計数をBの列に表示させるようにしたいのです。 Bの1~4のセルは結合されています。 すべてに○が入った場合は、B列の数字は 3+1=4 A1にしか○が入らなかった場合のB列の数字は3になります。 3+0=3   A   B   1 ○ 2 ○ 3     4 4 ○   ○が入れば、3を足す  一箇所にでも入れば1を足す それぞれ別の関数は出来たのですが ふたつの条件の合計を出す式が出来ません。 非表示の列を作って、そこにまずは別々に数字を出して それを合計させる手もあると思うのですが 列を増やしたりせずに、関数だけで、B列に数字が入るようにしたいのです。 うまく伝わりますでしょうか どうぞよろしくお願いします。

  • エクセルに関する質問です!

    【エクセル(プログラミングは不使用)】 データが入るたびに合計処理&セルが消えても数値が残る ようにする方法を教えてください!(以下の例のように) 今日セルE1に15を入力 セルF1に「15」を表示 ↓セルE1を消去(セルF1には「15」が表示されたまま) 翌日セルE1に16と入力 セルF1に「31(15+16)」を表示 ↓セルE1を消去(セルF1には「31」が表示されたまま) その翌日にセルE1に17と入力 セルF1に「48(15+16+17)」を表示

  • エクセルについての質問です。

    エクセルについての質問です。 空欄の列に隣列の数値を自動入力される関数をご教示下さい。 図をご覧頂くとわかるかもしれませんが、 条件として、 ・色付でかつ数値のあるセルを左セルに自動インプットされたい。 という条件をつけさせて頂きます。 エクセルマスターの皆さんのご回答をお待ちしております。 ↓過去に質問させて頂いたものです。 ここで紹介頂いた関数で処理したかったのですが、 できませんでした。。 http://okwave.jp/qa/q6034136.html

  • このようなデータ処理はエクセルの関数組み合わせやオートフィルなどで可能でしょうか

    エクセルでのデータ処理に関する質問です。 ・処理する元データ ヨコ10列(A列からJ列まで)、タテ20個の数値データ ・行いたい処理 (1)それぞれの二つの列(たとえばA列とB列)の同じ行の数値データをそれぞれ三乗して足す。そのあと、足したものを合計する。 (2)すべての組み合わせについて計算する。(つまり、A列-A列、A列-B列、A列-C列、……、B列-A列、B列-B列、B列-C列、……、I列-J列、J列-J列の組み合わせ) (3)これら算出した数値を横一列(1×100)にする。 最終目標は(3)です。(1)は単純なオートフィルでなんとかなるのですが、(2)は、合計する範囲を毎回指定しなおさなくてはいけないために大変面倒です。 このような形式のデータがたくさんあるために、できるだけ手間を省きたいのですが、どうしたらいいかわかりません。オートフィルをうまく組み合わせればできるような気もしますが、どうもできません。10個計算したら次に移ってくれるようなオートフィルがあればいいのに、とか、不可能なことばかり考えてしまいます。うまくやれば、横向きに100個のセルをオートフィルで、つまんで引っ張るだけでできるような気もしますが、できません。 ご存知の方にとっては簡単なことかもしれませんが、うまくいかず、ムズムズしております。どうか、どなたかお教えいただけないでしょうか。

  • Excelに貼付ける際に空白で別のセルに貼付け

    Rというソフトで統計処理を行っているのですが、結果をExcelに貼りつけて処理しようとする時に上手くいかなくて困っています。 例えば、以下のような結果が出力されたとします。 0 0.05 -2.2 2.4 1 -18 5.3 -1.1 2 0.05 -8.8 3.8 3 0.05 -6.8 2.2 この結果全てをコピーして、ExcelのA1セルに貼り付けると、 A1セルに「0 0.05 -2.2 2.4」 A2セルに「1 -18 5.3 -1.1」 A3セルに「2 0.05 -8.8 3.8」 A4セルに「3 0.05 -6.8 2.2」 というようになってしまいます。 理想としては、 A1セルに「0」、B1セルに「0.05」、C1セルに「-2.2」、D1セルに「2.4」、 A2セルに「1」、B2セルに「-18」、C2セルに「5.3」、D2セルに「-1.1」・・・ というように、空白で自動的に隣の列のセルに貼付けて欲しいのですが、方法が分かりません。 上記の程度であれば一つずつコピペしてやればいいのですが、さすがに数百のデータをそのようにすることはできません。 この場合、一旦テキストなどに保存して、マクロで処理してやるしかないのでしょうか? 使用しているExcelのバージョンは2000です。 なお、結果をCSV形式で保存出来るソフト(SPSSなど)を使う、Excelのアドオンで同等の処理を行えるものを探す、といった回答は避けてもらえるようお願いします。

  • EXCEL 計算式が合っているのに答えがゼロ?

    分かりにくいかもしれませんがお付き合いお願いします。 列Bの数値データの合計を求め、列Cにその構成比率を求める時に出た現象です。 列Cの構成比率を求めるべきセルに式(「=」、列Bの1セルをクリック、「/」、列Bの合計をクリック、F4)を入力しエンターキーを押したところ、 0 となりました。 求めた式はセル指定での式になっており、立式に問題はなく、指定されたセルには既に数値が入力してあります。 (もちろん計算結果が0となるようなものではありません) セルの書式設定等で表示形式を変えてみましたが、どの場合においても0で変わりがなく、結局のところ0しか出ませんでした。 (もちろん桁上げや桁下げ、%表示にしてから桁上げ桁下げもやりました) (ROUNDなど関数による桁上げ桁下げは指定していません) 一旦、そのセルを消去し、数値式(セルに入力した具体的な数値でそのまま計算)にすると、答えは正常に表示されました。 再度、セルを消し、セル指定で式を書くとまた、0になりました。 (同じく書式設定等で確認しましたが、すべて0になりました) 納得がいかず、一旦パソコンを再起動し、同様の操作をしたところ、一発で構成比率が求められ、計算結果も間違いはありませんでした。 そう考えると、セルに記憶されるべきデータが正常に読み込めていないのが原因かなと思ったのですが、 そうなるということはハードの問題という可能性もあるのでしょうか。 たまたま何らかのバグが発生し計算ができなくなったのでしょうか。 再度同じような現象に見舞われたらと思うと、心配で質問させていただきました。 EXCELの構成に詳しい方からの回答をお待ちしております。

専門家に質問してみよう