プロが教えるわが家の防犯対策術!

いろいろ調べてみたのですが、どのようにすればいいのかわからなかったので質問させていただきます。
Excel 2003において、下記のシート1のデータをシート2~4に曜日ごとに抽出したいと思っています。
その際、シート1に追加したら自動でシート2~4に反映されるようにもしたいと思っていますが、どのようにしたらよいでしょうか?

Excelが詳しくない者が扱うことが多いので、できればマクロは使わず、関数でできたらいいと思っているのですが、最悪マクロを使った方法でも構いませんのでご教授いただければ幸いです。

【シート1】
  a  b   c   d   e      f
1 月  火  水  名前  生年月日  年齢
2 ○        佐藤  1980/1/1  29
3    ○     田中  1981/1/1  28
4 ○     ○  山田  1982/1/1  27

【シート2】(月曜に○のついている人の名前と年齢を表示)
  a   b  
1 名前 年齢
2 佐藤 29
3 山田 27

【シート3】(火曜に○のついている人の名前と年齢を表示)
  a   b  
1 名前 年齢
2 田中 28

【シート4】(水曜に○のついている人の名前と年齢を表示)
  a   b  
1 名前 年齢
2 山田 27

A 回答 (3件)

シート月曜


A2:
=IF(ROW(A1)>COUNTIF(Sheet1!A:A,"○"),"",INDEX(Sheet1!D:D,SMALL(IF(Sheet1!$A$2:$A$100="○",ROW($A$2:$A$100),9999),ROW(A1)))&"")
と打ち込んでコントロールキーとシフトキーを押しながらEnter
B2:
=IF(A2="","",INDEX(Sheet1!F:F,SMALL(IF(Sheet1!$A$2:$A$100="○",ROW($A$2:$A$100),9999),ROW(A1))))
と打ち込んでコントロールキーとシフトキーを押しながらEnter


#関数にこだわるのをヤメにして,もうちょっと普通の人にも判るアプローチで仕事の段取り全体を見直す事を推奨します。
    • good
    • 0
この回答へのお礼

素早い回答、ありがとうございました。
家で試してみたところうまくいきそうだったので、明日職場で試してみたいと思います。
ありがとうございました。

お礼日時:2010/03/15 22:37

こんばんは!


一例です。
月~水まででOKという前提で・・・

↓の画像でSheet1のデータを各Sheetに振り分けていますが、
とりあえずSheet2(月)分だけで説明させていただきます。
(火)・(水)のSheetも同様ですので方法だけ理解いただければ良いかな!って思っています。

Sheet1に作業用の列を設けています。
G2セルに
=IF(A2="○",ROW(A1),"")
として列方向(I列まで)と行方向にオートフィルでコピーします。
このデータを元に各Sheetに表示するようにします。
G列がSheet2用・H列がSheet3・I列がSheet4用になります。
Sheet2だけの数式を載せておきますので、G列の範囲指定の部分をSheet3の場合はH列・Sheet4の場合はI列に変更してください。

Sheet2のA2セルに
=IF(COUNT(Sheet1!$G$2:$G$100)<ROW(A1),"",INDEX(Sheet1!$D$2:$F$100,MATCH(SMALL(Sheet1!$G$2:$G$100,ROW(A1)),Sheet1!$G$2:$G$100,0),COLUMN(A1)*2-1))
として列方向と行方向にオートフィルでコピーします。
同様の操作を各Sheet行います。

これでSheet1のデータが振り分けられるはずです。
尚、数式はSheet1の100行目まで対応できるようにしていますが、
データ量によって範囲指定の領域はアレンジしてください。

以上、長々と書きましたが
参考になれば幸いです。
他に良い方法があれば読み流してくださいね。m(__)m
「データを別シートに抽出してリアルタイムで」の回答画像2
    • good
    • 0
この回答へのお礼

わざわざ画像付きの分かりやすい回答、ありがとうございます。
いろいろ試してみた結果、なんとかなりそうです。
明日職場で試してみます。
ありがとうございました!

お礼日時:2010/03/15 22:43

ちなみに簡単に工夫するとこんな感じで。



シート1:
A列 B列
月曜 火曜
 ○
     ○
 ○

D列 E列F列
月曜
=IF(A2="","",COUNTA(A$2:A2))
 以下コピー

GHI列
名前,年齢



シート月曜:
A2:
=IF(ROW(A1)>MAX(Sheet1!D:D),"",VLOOKUP(ROW(A1),Sheet1!D:I,4))
B2:
=IF(A2="","",VLOOKUP(ROW(A1),Sheet1!D:I,6))
    • good
    • 1

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