- ベストアンサー
データの抽出
1か月の予定表をエクセルで作成しています。 新しい表を別に作成して、日付を入力したら、その日の分の予定を、既に作成済みの予定表をもとに表示させたいのです。 予定は日に何件もあるので、VLOOKUPではうまくいきません。どうしたらよいか、教えて下さい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.4 & No.5です。 >予定の入ってない欄には”0”が入るのですが、 >空白にすることはできないでしょうか? できます。次のようにしてください。 抽出する表(A2:K20)をマウスでドラッグしてすべて選択 ↓ メニューの書式>セルで 「セルの書式設定」を表示させ、 「表示形式」タブをクリック ↓ 「分類」から「ユーザー定義」を選び、 右の「種類」のいちばん上の欄に(G/標準を消して) 半角で # とだけ入力して〔OK〕をクリック ↓ これで空白でも 0 は表示されません。 * >また、抽出する表を、予定表の上にもっていきたい時も >同じような感じでよいでしょうか? はい、同じことです。 念のため・・ ▼作業列を使う方法 L列を作業列とします。 L23に↓ -------------------------------------- =IF(A23="","",IF(A23=$B$1,ROW(A1),"")) -------------------------------------- L200までオートフィルでコピー >抽出する表→A2~K20 ・・とのことですが、抽出する表の2行目は見出しですか? それとも見出しはなし、ですか? 見出しなしで、2行目から抽出したデータを表示させるのなら A2に、もし 2行目が見出しなら A3に↓ -------------------------------------- =IF(ROW(A1)<=COUNT($L:$L),INDEX($A$23:$K$200,SMALL($L:$L,ROW(A1)),COLUMN(A1)),"") -------------------------------------- A20までオートフィルでコピー そのまま右に K列までオートフィルでコピー A2(または A3):K20 までのすべてのセルに数式をコピーします。 * ▼配列数式 A2に、もし2行目が見出しなら A3に↓ -------------------------------------- =IF(ROW(A1)<=COUNTIF($A$23:$A$200,$B$1),INDEX($A$23:$K$200,SMALL(IF($A$23:$A$200=$B$1,ROW($A$1:$A$178),""),ROW(A1)),COLUMN(A1)),"") -------------------------------------- ◆配列数式です。Ctrl+Shift+Enter で確定してください。 確定後、作業列を使う方法に同じく、 A2(または A3):K20 までのすべてのセルに数式をコピーしてください。 * ところで・・ >予定はB列~K列 B列からケ、K列ぅーっ??!! Σ( ̄□ ̄)!!! それでも足りずにさらに同じ日付が下にくるんですか? 分きざみのスケジュールってやつですね、こりゃ。 もしかして超売れっ子タレントのマネージャーさんですか?
その他の回答 (5)
- AloneAgain
- ベストアンサー率71% (285/400)
No.4です。 >A列は空白にしておかなくてはいけないのですね? そんなことはありません。 A列が日付でも問題はありません。 >データはB列に日付、C列に予定、D列に予定2 ・・とのことですのでそれに沿って説明します。 予定が C列とD列の2列に入っているのなら、 No.4 の数式は修正する必要があります。 >INDEXの最初の欄には$C$2:$D$2という風に入れればよいですか? これはちがいます。 見出しが1行目にあって、 データが 2行目から始まっているのなら $C$2 ですが、 予定が多い月でも、100行以内におさまるのであれば $C$2:$D$100 200行ぐらいはいくかもしれないと思えば $C$2:$D$200 としてください。 ◆また、この部分だけを変更してもうまくいきません。 以下のようにしてください。 * データが何行目から始まっていて、 抽出する日付をどのセルに入力するのかが不明のままですが、 1行目が見出しで、2行目からデータが始まり、 200行もあれば足りる、 抽出する日付は G1 に入力する、と仮定します。 * ▼作業列を使う方法 E列を作業列とします。 E2 に↓ ------------------------------------ =IF(B2="","",IF(B2=$G$1,ROW(A1),"")) ------------------------------------ 以下、オートフィルでコピー(E200まで) 抽出する先頭のセルに↓ ------------------------------------ =IF(ROW(A1)<=COUNT($E:$E),INDEX($C$2:$D$200,SMALL($E:$E,ROW(A1)),COLUMN(A1)),"") ------------------------------------ ◆その右隣のセルにそのまま数式をコピーしてください。 先頭のセルが H2 だとすれば、I2 にそのままコピー。 右隣のセルの数式が↓のようになっていればOKです。 ------------------------------------ =IF(ROW(B1)<=COUNT($E:$E),INDEX($C$2:$D$200,SMALL($E:$E,ROW(B1)),COLUMN(B1)),"") ------------------------------------ H2、I2 の数式をそのまま下にオートフィルでコピー。 (1日の最大予定数分、MAX 10個なら 10行分) H列に 「予定」、I列に 「予定2」 が抽出されます。 ◆作業列に E列以外を使用する場合、 数式の $E:$E の部分(2ヶ所)をその列記号に書き換えてください。 * * ▼作業列を使わない方法(配列数式) 抽出する先頭のセルに↓ ------------------------------------ =IF(ROW(A1)<=COUNTIF($B$2:$B$200,$G$1),INDEX($C$2:$D$200,SMALL(IF($B$2:$B$200=$G$1,ROW($A$1:$A$199),""),ROW(A1)),COLUMN(A1)),"") ------------------------------------ ◆配列数式です。Ctrl+Shift+Enter で確定してください。 確定後、そのまま右隣のセルに数式をコピーしてください。 そのあと作業列を使用する方法に同じく、 2列分の数式を下に必要分コピーしてください。 ◆数式は直接自分で入力せず、 上の数式をコピーして EXCELに貼り付けてください。 (そのあと変更するところだけを修正してください) ◆その他の注意事項は No.4 と同じです。 * * とりあえず試してみてください。 その結果、思ったようにいかないのであれば、 どううまくいかないのかを具体的に補足してください。 その際、以下のことを明確にしてください。 * 入力した数式(数式をコピーしてそのまま提示してください) 元になる予定表の見出しが何行目で、データは何行目から始まっているか 抽出する日付を入力するのはどのセルか 予定を抽出する先頭のセルはどのセルか
お礼
データでてきました! ありがとうございます!! 予定の入ってない欄には”0”が入るのですが、空白にすることはできないでしょうか? また、抽出する表を、予定表の上にもっていきたい時も 同じような感じでよいでしょうか? ○抽出する表→A2~K20 (抽出する日付を入力するセルはB1) ○予定表→A22~K200 (見出しは22行目・データは23行目から) (日付はA列・予定はB列~K列) という感じなのですが… 何度も申し訳ありません。
- AloneAgain
- ベストアンサー率71% (285/400)
こんにちは。 データがどのように(どの列に)入力されていて、 どこに抽出するのかが不明ですが、 次のようなものと仮定します。 * 日付がB列、予定がC列にある。 2行目からデータが始まっていて、B2:C100 の範囲内におさまる。 抽出したい日付を F1 に入力する(同じシートに抽出する)。 * ▼作業列を使う方法 D列を作業列とします(どの列でもかまいません)。 D2に↓ ------------------------------------ =IF(B2="","",IF(B2=$F$1,ROW(A1),"")) ------------------------------------ 以下、D100までオートフィルでコピー。 ◆データが何行目から始まっていても ROW(A1) の A1は A1のままにしておいてください。 抽出する先頭のセルに↓ ------------------------------------ =IF(ROW(A1)<=COUNT($D:$D),INDEX($C$2:$C$100,SMALL($D:$D,ROW(A1))),"") ------------------------------------ 以下、必要分オートフィルでコピー。 (日付が同じ予定が最大10件なら 10行分) F1 に 2 と入力すれば、2日の予定がすべて抽出されると思います。 ◆先頭のセルが何行目であっても ROW(A1)(2ヶ所)の A1 は A1 のままにしておいてください。 作業列が目障りなら非表示にしてください。 * * ▼作業列を使わない方法(配列数式) 抽出したい先頭のセルに↓ ------------------------------------ =IF(ROW(A1)<=COUNTIF($B$2:$B$100,$F$1),INDEX($C$2:$C$100,SMALL(IF($B$2:$B$100=$F$1,ROW($A$1:$A$99),""),ROW(A1))),"") ------------------------------------- 配列数式です。Ctrl+Shift+Enter で確定してください。 数式の前後に { } がつけば OKです。 ◆F1セルに日付を入れても、 #VALUE! と表示される場合は配列数式になっていません。 先頭のセルを選択して F2キーを押したあと、 もう一度、Ctrl+Shift+Enter で確定してください。 以下、必要分オートフィルでコピー。 F1 に 2 と入力すれば、2日の予定がすべて抽出されると思います。 ◆上に同じく、先頭のセルが何行目であっても ROW(A1)(2ヶ所)の A1 は A1 のままにしておいてください。 ◆ROW($A$1:$A$99) の部分はデータが B2:C100 と仮定しているので (データは99行以内なので)このように指定します。 もしデータ範囲を B2:C150 のように広げる場合、 (データは 149行なので)ROW($A$1:$A$149) にしてください。 必ず A1から始めてください。 ◆その他の列記号やセル位置は実際の表に合わせて適宜変更してください。
お礼
ありがとうございます。 ということは、作業列にしても配列数式の方法にしても、A列は空白にしておかなくてはいけないのですね? データはB列に日付、C列に予定、D列に予定2という感じになっているのですが、その場合INDEXの最初の欄には$C$2:$D$2という風に入れればよいですか?
- alfa-menthol
- ベストアンサー率0% (0/1)
すでにある表がどんな形式なのかわからないのでなんともいえませんが、それぞれの予定に対して1対1で日付がはいっていれば、なんとでもなると思います。 それともこんな感じでしょうか? [2005/5/1][どらいぶ] [ ][しょくじ] [ ][かいもの] [2005/5/2][りょこう] [2005/5/3][おしごと] [ ][すぽーつ] [ ][いけばな] [ ][やくしょ] [2005/5/4][おんがく] [2005/5/5][ままごと] [ ][さんぱつ] であれば空白セルにも日付を入力しないといけませんね。 上記のパターンなら単純にひとつ上のセルを参照する式(たとえばA2には[=A1])をいれてあげて、それをほかの空白セルに一気にコピーするだけです。空白セルのみコピーする方法はURLを。
お礼
各予定に対して、日付は入力しています。 でもそれからどうしてよいのかわからないんです。 VLOOKUPでどうにかなると思ったのですが。 例えば、日付欄に「2」と入力されている行のデータを全て表示する、といった関数はないものでしょうか。 コピーの方法、色々あるんですね! これからの参考にさせていただきます!!
- yetinmeyi
- ベストアンサー率21% (761/3595)
予定表で検索したら・・・ 参考に
- yetinmeyi
- ベストアンサー率21% (761/3595)
エクセル予定表 エクセルでの年・月の単なる予定表ですので好きに変更して下さい 参考になりますか?
補足
既にもとになる表は作成済みなんです。 その表から、例えば5月2日の予定を抽出したいのです。 その日の分の予定を表示するための新しい表に、抽出したデータを表示したいのですが・・ 教えて頂いたソフトに入力しなおした方がよいでしょうか?
お礼
本当に、本当にありがとうございました!! 分かりやすく教えていただいたおかげで、大成功です! 遅くなりましたが、心よりお礼申し上げます!!! 本当にありがとうございました。 ***さて。 ・・・細かく予定を組みたがるA型なだけで、そんな売れっ子のマネとかじゃないんですよぅ。ごめんなさいっ