- ベストアンサー
エクセルの関数でデータ抽出をしたい
エクセルの関数でデータの抽出をしたいのですが、出来るか分からないですが、やり方を教えてください。 まず、現状の管理簿ではA列に発注管理番号、B列に管理エリア、C列に納期他をランダムに打ち込んでいます。 今回、新たにシートを追加して、納期の日付毎に管理できるカレンダーを作成していきたいと考えています。 具体的には新たなシートのA列に1日から31日までを事前に入力していて、B列にその日に該当する納期のある発注管理番号とエリアを全て表示させたいと考えています。 例として、管理簿のシートが A B C 1 22-1 南 2010/2/1 2 22-2 北 2010/2/3 3 22-5 南 2010/3/4 4 22-12 西 2010/2/17 5 22-31 東 2010/2/3 6 22-8 北 2010/2/4 カレンダーのシートで A B 1 2010/2/1 22-1南 2 2010/2/2 3 2010/2/3 22-2北,22-31東 4 2010/2/4 22-8北 5 2010/2/5 6 2010/2/6 7 2010/2/7 こんな感じにしたいと思っています。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは! 一例です。 ↓の画像で説明させていただきます。 Sheet1に作業用の列を設けさせていただきます。 作業列D2セルに =IF(C2="","",C2&COUNTIF($C$2:C2,C2)) という数式を入れ、オートフィルでずぃ~~~!っと下へコピーします。 そして、Sheet2のA列には月末まで日付が入っているとして、 B2セルに =IF(COUNTIF(Sheet1!$C$2:$C$1000,$A2)<(COLUMN(A1)+1)/2,"",INDEX(Sheet1!$A$2:$A$21000,MATCH($A2&(COLUMN(A1)+1)/2,Sheet1!$D$2:$D$1000,0))) C2セルに =IF(B2="","",VLOOKUP(B2,Sheet1!$A$2:$B$1000,2,0)) とし、B2・C2セルを範囲指定し、C2セルのフィルハンドルで列方向にオートフィルでコピーします。 (同日が何件あってもかまいませんので、空白になっても多めにコピーしておきます) 最後にB2~オートフィルした最後の列を範囲指定し、最後の列のフィルハンドルで 下へコピーすると画像のような感じになります。 尚、数式はSheet1の1000行目まで対応できるようにしていますが データ量によって範囲指定の領域はアレンジしてください。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m
その他の回答 (3)
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No3です。 ごめんなさい。シート1では作業列を設けます。 D1セルには次の式を入力し下方にオートフィルドラッグします。 =IF(OR(A1="",COUNTIF(C:C,C1)=1),"",C1&"/"&COUNTIF(C$1:C1,C1))
お礼
詳しくありがとうございました
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えばシート2のA1セルには2010/2/1と入力して、下方にオートフィルドラッグします。 B1セルには次の式を入力して横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$C:$C,$A1)=0,"",IF(INDEX(Sheet1!$D:$D,MATCH($A1,Sheet1!$C:$C,0))="",IF(COLUMN(A1)<=2,INDEX(Sheet1!$A:$B,MATCH($A1,Sheet1!$C:$C,0),COLUMN(A1)),""),IF(COUNTIF(Sheet1!$D:$D,$A1&"/"&ROUNDUP(COLUMN(A1)/2,0))=0,"",INDEX(Sheet1!$A:$B,MATCH($A1&"/"&ROUNDUP(COLUMN(A1)/2,0),Sheet1!$D:$D,0),MOD(COLUMN(A1)-1,2)+1))))
お礼
詳しくありがとうございました
- tom04
- ベストアンサー率49% (2537/5117)
No.1です! たびたびごめんなさい。 前回の数式で範囲指定に少し間違いがありました (前回の数式でも正常に作動するとは思いますが・・・) B2セルの数式を =IF(COUNTIF(Sheet1!$C$2:$C$1000,$A2)<(COLUMN(A1)+1)/2,"",INDEX(Sheet1!$A$2:$A$1000,MATCH($A2&(COLUMN(A1)+1)/2,Sheet1!$D$2:$D$1000,0))) に訂正してください。 INDEX関数の中の範囲で「1000」となるべきところが「21000」となっていました。 単純に入力ミスです。 どうも何度も失礼しました。m(__)m
お礼
詳しくありがとうございました
お礼
詳しくありがとうございました