• 締切済み

エクセルの各シート間にまたがる統計処理について質問です

エクセルの各シート間にまたがる統計処理について質問です エクセルの各シート間にまたがる統計処理について質問です  例えばsheet1~sheet20までのc6セルのうち、一番大きい数字を統計処理用シートのA2に、一番大きな数字のsheetの A1(subject ID)を統計処理用シートのB2に、大きな数字のsheetのB2(subject NAME)を統計処理用シートのC2に代入するといった作業はどんな関数を用いればいいのでしょうか?  教えてください。お願いします

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

>MackyNo1さんに教えていただいたやり方ではシート1~20まででしたが、20のとこを「一番後ろにあるシート」にするにはどんな関数(?)を使えばいいんでしょうか?たぶんこれからシートの枚数が膨らんでくるので、シート番号指定だといちいち数式書き直さないといけないですよね・・・ 基本的に関数で集計する場合は、集計対象が変更になれば当然のことですが以下のように数式を変更する必要があります。 =MAX(最初のシート名:最後のシート名!C6) この場合でも、最大値については、上記のように最初のシート名と最後のシート名で串刺し集計ができますが、参考までに提示した各シートのA1セルを参照する数式では、シート名が「Sheet1」のようにSheet+数字になっているケース以外には適用できません。 もし、各シートのC6セルやA1セルの値でデータ処理したいなら、別シートに各シートのデータを引っ張ってきて、このデータ範囲を数式処理をする方が簡単です。 ちなみに、この場合でもシート名が数字で規則的になっているなら、以下のようなINDIRECT関数が利用できます(例えばSheet2以下のA1セルを表示する場合)。 =INDIRECT("Sheet"&ROW(A2)&"!A1")

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! ある程度希望に近い形になったみたいでよかったですぅ~! >C3にサブジェクト名を・・・ とありましたが、質問では「C2」に代入となっていましたので、Offset部分をあのようにしてみました。 C3セルに表示したいのであれば、前回のコード内の .Offset(, 2) = Worksheets(k).Range("B2") の行を .Offset(1, 2) = Worksheets(k).Range("B2") に変更してみてください。 C3セルに表示されると思います。 それから >最大値と最小値を1~10位まで抜き出したり・・・ とありますので、 前回のコードの最終行 ws1.Columns(1).Delete (xlToLeft) を削除して一度マクロを実行してみてください。 作業用の列としてA列を挿入し、A列に各SheetのC6の値を表示させ、 その後の処理をして最後にA列を削除するコードにしていましたので A列のデータを残したままにすれば最大値と最小値の 1~10位までの抜き取りも Large関数・Small関数を使用すれば可能だと思います。 尚、余計なお世話かもしれませんが、 A列に表示されたデータが各SheetのC6のデータになっていて、 A列の行番号が各SheetのSheet番号(何番目のSheetか)になるようにしていました。 具体的にどのセルに順位を表示させれば良いのか判らないので この程度しか書けません。ごめんなさい。 お役に立てばよいのですが・・・m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! VBAで無理矢理って感じの方法になってしまいますが・・・ 統計処理用シートをSheet1として、20SheetはSheet2以降にあるとしています。 Altキーを押しながらF11キーを押してみてください。 VBE画面が出ますので、↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub test() Dim i, j, k As Long Dim ws1 As Worksheet Set ws1 = Worksheets("sheet1") j = ws1.Cells(Rows.Count, 1).End(xlUp).Row ws1.Columns(1).Insert For i = 2 To Worksheets.Count ws1.Cells(i, 1) = Worksheets(i).Range("C6") Next i k = WorksheetFunction.Match(WorksheetFunction.Max(ws1.Range("A:A")), _ ws1.Range("A:A"), False) With ws1.Range("B2") .Value = Worksheets(k).Range("C6") .Offset(, 1) = Worksheets(k).Range("A1") .Offset(, 2) = Worksheets(k).Range("B2") End With ws1.Columns(1).Delete (xlToLeft) End Sub 尚、同じ最大値が複数Sheetにある場合は最初のSheetのデータが表示されると思います。 そして、一旦マクロを実行すると元に戻せませんので、 できれば別Bookにコピーしてマクロを試してみてください。 以上、参考になれば良いのですが 他に良い方法があればごめんなさいね。m(__)m

menardlady
質問者

お礼

 統計処理用シートのA2セルに各シート同一セル上の最大値を求めるのと、B2セルに最大値を出したシートのサブジェクトIDを出すことができました!C3にサブジェクト名を出すことはできませんでしたが、VBAの記述をいじりながらチャレンジしてみます。  あと、最大値と最小値を1~10位まで抜き出したりとかもやってみます。  学校でグループワークの実験レポートを作成してるんですが、「お前パソコン詳しいからエクセル係な」って無茶振りされて(笑)、困ってたので本当に助かりました。 ありがとうございました。  

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

多数のシートの同じセルに入力されている数字の最大値を求めることは以下のような関数で可能ですが、その最大値の含むシートのセルの値を求める関数はありません。 A2セル =MAX(Sheet1:Sheet20!C6) 少し工夫するなら、例えば、B2セルに以下のような関数を入力しておき、数式バー上で、「INDIRECT("Sheet"&ROW(A1:A20)&"!A1")」と「INDIRECT("Sheet"&ROW(A1:A20)&"!C6")」の部分をそれぞれドラッグして選択し、F9キーを押して配列定数にすれば、最大値の含むシートのA1セルの値を表示できます。 B2セル =INDEX(INDIRECT("Sheet"&ROW(A1:A20)&"!A1"),MATCH(A2,INDIRECT("Sheet"&ROW(A1:A20)&"!C6"),))

menardlady
質問者

お礼

 ありがとうございました。さっそくやってみました。  今回の処理では、シート2以降サブジェクトごとの主に数字データを入力していき、シート1を統計処理用にして各シートの同一セルの数字を参照してサブジェクト順に並べたりということをしたいんです。  MackyNo1さんに教えていただいたやり方ではシート1~20まででしたが、20のとこを「一番後ろにあるシート」にするにはどんな関数(?)を使えばいいんでしょうか?たぶんこれからシートの枚数が膨らんでくるので、シート番号指定だといちいち数式書き直さないといけないですよね・・・  ほんとは自分で調べないといけないんだろうけど、ちょっとせっぱつまってて困ってます。  教えていただけると嬉しいです。

関連するQ&A

  • Excel別シートの数字

    よろしく御願い致します Excel2007です 例えば、シート1のA2に数字が入っています(100) この数字をシート2のC7(90)にシート2のB2(10)を引いた数字を入れたいのですが 関数は如何すれば良いでしょうか、文章では解りずらいので 例 シート1のA2セル(100)-シート2のB2セル(10)=シート2のC7に入る数字(90)

  • 【エクセル】シート1の複数セルをシート2に反映

    エクセルについて、教えて頂きたいです。 まず添付のエクセル画像を見て頂けますでしょうか。 <質問内容> まず添付画像は左側の「シート1」と、右側の「シート2」の2つから成っています。 シート1のA2セルは、ご覧の通り入力規則による「リスト」になっておりまして、 「A」「B」「C」の3つからプルダウン選択できるようになっています。 この状態でやりたいことがあるのですが、 例えばここで、 シート1のプルダウンで「B」を選択したとき、 シート2の「B」の行「B3、C3、D3セル」を自動的に参照して、 シート1の「B2、C2、D2セル」に「200 600 1,100」の数字が反映される方法を、 教えて頂けませんでしょうか。 ぜひとも宜しくお願いします(m_ _m)  ※ちなみに、シート名を「A」「B」「C」と記載してINDIRECT関数で反映させる方法は   存じておりますが、シートを1つに収めたいと思っております。

  • Excelでの統計処理について

    Excelの表でマークシート試験の合計点、平均点、正解率などの統計をしているのですが、以下のような場合はどのような数式を入れたらよいのでしょうか? 通常は、 A1セル 正解の記号 B1セル Pさんの選択した記号 C1セル Qさんの選択した記号 D1セル 正解数 数式 =SUM(IF($A1=B1:C1,1,0)) を入力 E1セル 正解率 数式 =SUM(IF($A1=B1:C1,1,0)/COUNT(B1:C1))*100 を入力 で、この問題の正解数、正解率が出ると思いますが、 問題の不手際で、正解の記号が「イまたはロ」というように正解が2つ有り、 選択した記号がどちらか合っていれば正解というようなときは、 D1、E1セルにはどのような数式を入力すればよいのでしょうか? アドバイスお願いします。

  • エクセルVBAでの質問です。

    エクセルVBAでの質問です。 以下のようなA列にID、B列、C列にそれぞれIDに対応したデータがあります。 A      B      C ID    名前    住所 10000 ~ 39999 IDを10000~19999、20000~29999、30000~39999で分けて別シートに もっていこうと思っています。 自分としては、ID左端の数字をLeft関数を使って何とかしようと思っていましたが、 どうしてもうまくいきません。 何かいい方法はないでしょうか。

  • エクセル関数の質問

    こんにちは。エクセルについて教えてください。 まずは伝わりやすいように下記を見てもらえますか?(と思いましたが、逆にうまく伝わるか書いたあとに不安になりました) ↓シート1 ___A______________B____C   1_[アイウエ]_[T]_[ ] 2_[カキクケ]_[T]_[ ] 3_[サシスセ]_[Z]_[ ] ↓シート2 ___A_______B 1_[アイ]_[(1)] 2_[カキ]_[(2)] 3_[シス]_[(3)] 上段と左側のアルファベットと数字はセル番地です。 [__]がひとつのセルです。 シート1のC列は、空白です。 やりたいことはというと 1.シート1のA列にシート2の文字が含まれている場合にシート1のC列にシート2のB列の(1)~(3)を入れる。(Vlookup関数でできるかな?と思ったら、完全に同じものじゃないとうまく機能しないようなので・・・) 2.「1」の作業のあとに、シート1でB列が「T」&C列が「(1)」のものをカウント。(Countif関数かな?と漠然と思いつつ、二つの条件の入れ方が分からずエクセル本を見ていたら、Dsum関数を見つけて「これ?」と思いましたが、それもよく分からず・・・) よろしくお願い致します。

  • エクセル関数について

    こんばんは。 エクセル関数に関して、質問させてください。 今現在、エクセルであるデータを作っているのですが、 そこに例えばB2セルに東京、C2セルに3という数字が、またB3セルに大阪、C3セルは空欄になっているとします。 そこで、C列に数字が入っている場合のみ、B列の都道府県名と、それに対応するC列の数字を他のシート(同じシートでも可)に書き出すようにしたいのですが、そのような関数はあるのでしょうか。 最終的には、マクロを組んで、自動化させたいのですが… 長々と申し訳ありませんが、よろしくお願いいたします。

  • エクセルでの統計

    エクセルで =BINOMDIST(C6,48,0.3,FALSE) C6のセルにこんな式が入っています。 どういった計算がされているのでしょうか。 統計のワークシート上なのでおそらく統計計算だと思うんですが、わからなくて困っています。 教えてください。

  • エクセル2000での関数

    いつもお世話になってます。 エクセルの関数の質問です。 シート1のA10のセルに100と言う数字があります。その数字をシート2のC50に表示させたいのです。違うシートに表示させる関数を教えてください。宜しくお願いいたします。

  • Excelシート

    ExcelシートBに打ち込んだ数字をAに反映させたい。シートAのセルに=をBのセルを範囲を指定してエンターしましたが♯VALUE!となりました…=シートB!BS55:BZ55どうしたらシートAに反映するのでしょうか教えて下さい。

  • エクセルの質問です。

    シート1でセルA2の数字が1~5の場合シート2のB3に記述される シート1でセルA3の数字が6~9の場合シート3のB4に記述される このような場合どういった関数を使うのでしょうか? 何卒よろしくお願いいたします。

専門家に質問してみよう