プロが教える店舗&オフィスのセキュリティ対策術

エクセルやgoogleスプレッドシートで、下記のようなデータが入力されていたとします。

【元データ(シート)】
        A B C D E F
1行目・・・ 山田 国語 英語  理科  社会  音楽
2行目・・・ 鈴木 理科 社会  英語  数学  国語
3行目・・・ 山田 数学 国語  英語  音楽  社会
4行目・・・ 山田 社会 英語  音楽  理科  数学


上記のデータが入力されているシートから、山田さんのデータのみを別のシートへ下記のように
集計?表示?するような関数ってありますでしょうか?

【作りたいデータ(シート)】

山田のデータのみのシート
       A B C D E
1行目・・・国語 英語  理科  社会  音楽
2行目・・・数学 国語  英語  音楽  社会
3行目・・・社会 英語  音楽  理科  数学


希望としては、元データシートに5行・6行とどんどんデータを入力をしていく度に、
元データシートA列の名前で判断をし個人別で別シートにデータを1行目から順に並べたいです。


このような事は可能でしょうか?

いろいろと調べてみましたがうまく調べられずわからなかったので、
質問させていただきました。

わかる方いらっしゃいましたら、回答をお願いいたします。

A 回答 (3件)

毎日だいたい1つか2つは同系統のご相談が寄せられるFAQですが,ご質問者さんによって,


・理解できなくてもコピーすれば出来るムズカシイ式に飛びつく人
・作業列を幾つか使って簡単な式だけで出来る方法がいいと思う人
に分かれます。前者の方が8割ぐらいで多いと思いますが。


【前者】
山田シートのA1:
=index(Sheet1!a:a,small(if(sheet1!$A$1:$A$999="山田",row($A$1:$A$999),9999),row(a1)))&""
をコントロールキーとシフトキーを押してEnterで入力,右にコピー,下にコピー

【後者】
元のシートのA列:
A1:
=B1&COUNTIF($B$1:B1,B1)
B1以下B列
山田etc
C列以降
国語算数理科社会etc

山田シートのA1:
=IF(ROW(A1)>COUNTIF(Sheet1!B:B,"山田"),"",ROW(A1))
以下コピー
山田シートのB1:
=IF($A1="","",VLOOKUP("山田"&$A1,Sheet1!$A:$G,COLUMN(C1),FALSE))
右にコピー,下にコピー


元のシートのA列を他の用途に使うのは絶対に許せない場合は,端っこの邪魔にならないM列とかに「山田1,2,3」を作成してINDEX(MATCH())関数で左側を取ってくることでも出来ます。
    • good
    • 0
この回答へのお礼

同じような質問がたくさんあったのが、分からず質問してしまってすみませんでした。

自分自身、よくわかっていない状態でしたので、助かりました。

他の片が回答して下さったものも含め、参考にさせていただきたいと思います。

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

お礼日時:2011/04/18 15:16

 山田のデータのみのシートのデザインですが、



     A列  B列  C列  D列    E列
1行目  国語 英語 理科 社会 音楽
2行目  数学 国語 英語  音楽 社会
3行目  社会 英語 音楽 理科 数学

という形式では、誰のデーターなのか分かりませんから、以下の様にされては如何でしょうか。

     A列  B列  C列  D列    E列
1行目  山田
2行目  国語 英語 理科 社会 音楽
3行目  数学 国語 英語  音楽 社会
4行目  社会 英語 音楽 理科 数学

 尚、A1セルに入力した「山田」という文字列は、関数処理の判定でも使用しますから、元データーのA列に入力した名前と同じ文字列にして下さい。(「山田のデーター」等の様に、余計なものは付け加えない様にして下さい)
 そして、今仮に、元データーが存在するシートのシート名がSheet1であるものとした場合、山田のデータのみのシートのA2セルには、次の数式を入力して下さい。

=IF(ROWS($2:2)>COUNTIF(Sheet1!$A:$A,$A$1),"",INDEX(Sheet1!B:B,SUMPRODUCT(ROW(Sheet1!$A$1:INDEX(Sheet1!$A:$A,MATCH("゛",Sheet1!$A:$A,-1)))*(Sheet1!$A$1:INDEX(Sheet1!$A:$A,MATCH("゛",Sheet1!$A:$A,-1))=$A$1)*(COUNTIF(OFFSET(Sheet1!$A$1,,,ROW(Sheet1!$A$1:INDEX(Sheet1!$A:$A,MATCH("゛",Sheet1!$A:$A,-1)))-ROW(Sheet1!$A$1)+1),$A$1)=ROWS($2:2)))))

 次に、山田のデータのみのシートのA2セルをコピーして、B2~E2の範囲に貼り付けて下さい。
 次に、山田のデータのみのシートのA2~E2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。

 後は、山田のデータのみのシートのA1セルに

山田

と入力するだけで、抽出結果が表示されます。

この回答への補足

今回は一番初めに回答を下さった方をベストアンサーとさせていただきます。

補足日時:2011/04/18 15:19
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございました。

自分自身、よくわかっていない状態でしたので、助かりました。

他の片が回答して下さったものも含め、参考にさせていただきたいと思います。

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

お礼日時:2011/04/18 15:17

条件をつけて抜き出し問題で、週に数回この質問コーナーに現れるFAQだ。


それも関数でやりたいという(それしか知らない)質問者からだから困る。
表計算の関数では、抜き出し問題は式(その背後にある考え方)が複雑になって、初心者には難しいものになる。
Googleででも「imogasi方式」で照会し、数個の質問の回答を読めば、1つの式で出来る式は、INDEX、SMALL、MATCHなど組み合わせた式や配列数式を使ったものなどが出てくる。これらは関数の組み合わせた意味さえ初心者、中級者には理解が難しい。全セル複雑な式で埋まる(全式が再計算される可能性あり)。
興味あれば勉強してみて。
ーー
それよりフィルタなどの操作による解決や
ピボットによる解決を勧める。
ーー
上記imogasi方式では、該当の(山田の)行に上から連続番号を関数で振る。その作業列を1列使ってしまうが。
そして(同一シートか)別シートなりに、第1行目は、元シートの連番の1をMATCH関数で探して、第2行目には連番の2
をMATCH関数で探して、・・・、1セルずつデータを新シートなどに持ってくる。
セルの式は縦方向、横方向の2回の式の複写で出来る。
あと余分な行まで式を複写しておくためのエラーの表示を抑止するテクニックなどが必要。
これも全セル式で埋まる。

この回答への補足

今回は一番初めに回答を下さった方をベストアンサーとさせていただきます。

補足日時:2011/04/18 15:19
    • good
    • 0
この回答へのお礼

同じような質問がたくさんあったのが、分からず質問してしまってすみませんでした。

自分自身、よくわかっていない状態でしたので、助かりました。

他の片が回答して下さったものも含め、参考にさせていただきたいと思います。

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

お礼日時:2011/04/18 15:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!