• ベストアンサー

エクセルでデータを抽出し,別シートに転記する方法

「志望校一覧」というシートに添付ファイルのような書式で約200人のデータが入っています。 これを高校学科別にデータを抽出して書式を変えずに「志望校別」という別のシートに転記したいのですが,何か良いマクロか数式はありますか?実際のデータが入っている行は3行目(A子)から188行までです。並び順は右端のコード順,なおかつ組・番順になると良いのですが…。

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

>並び順は右端のコード順,なおかつ組・番順になると良いのですが…。  並び方は、コード順になっていることが最優先であり、同じコードのもの同士の間では組順、コード順と組が共に同じもの同士の間では番順にすると考えれば宜しいのでしょうか?  その場合は、複数の作業列を設けて、以下の様な方法になります。  今仮に、元データーが入力されているシートがSheet1で、Sheet2のA列~D列を作業列として使用して、Sheet3のA2セルに入力した校名と、Sheet3のB2セルに入力した学科名を基にして、Sheet3のA列~D列の6行目以下に抽出結果を表示させるものとします。  まず、Sheet2のA3セルに次の数式を入力して下さい。 =IF(COUNT(Sheet1!$A3,Sheet1!$B3,Sheet1!$F3)=3,Sheet1!$F3*100000+Sheet1!$A3*1000+Sheet1!$B3,"")  次に、Sheet2のC3セルに次の数式を入力して下さい。 =IF(ROWS($A$3:$A3)>COUNT($A:$A),"",MATCH(SMALL($A:$A,ROWS($A$3:$A3)),$A:$A,0))  次に、Sheet2のD3セルに次の数式を入力して下さい。 =IF($C3="","",INDEX(Sheet1!$D:$D,$C3)&INDEX(Sheet1!$E:$E,$C3))  次に、Sheet2のB3セルに次の数式を入力して下さい。 =IF($D3="","",$D3&COUNTIF($D$3:$D3,$D3))  次に、Sheet2のA3~D3の範囲をコピーして、同じ列の4行目以下に貼り付けて下さい。  次に、Sheet3の A1セルに  校名 B1セルに  学科名 A4セルに  組 B4セルに  番 C4セルに  氏名 D5セルに  コード番号 と入力して下さい。  次に、Sheet3のA4セルとA5セルセルを結合して下さい。  次に、Sheet3のB4セルとB5セルセルを結合して下さい。  次に、Sheet3のC4セルとC5セルセルを結合して下さい。  次に、Sheet3のD5セルに次の数式を入力して下さい。 =Sheet1!$D$1&""  次に、Sheet3のA6セルに次の数式を入力して下さい。 =IF(ROWS($A$6:$A6)>COUNTIF(Sheet2!$D:$D,$A$2&$B$2),"",INDEX(Sheet1!A:A,VLOOKUP($A$2&$B$2&ROWS($A$6:$A6),Sheet2!$B:$C,2,FALSE)))  次に、Sheet3のA6セルをコピーして、 次に、Sheet3のB6セルとC6セルに貼り付けて下さい。  次に、Sheet3のD6セルに次の数式を入力して下さい。 =IF(ROWS($A$6:$A6)>COUNTIF(Sheet2!$D:$D,$A$2&$B$2),"",INDEX(Sheet1!F:F,VLOOKUP($A$2&$B$2&ROWS($A$6:$A6),Sheet2!$B:$C,2,FALSE)))  次に、Sheet3のA6~D6の範囲をコピーして、同じ列の7行目以下に貼り付けて下さい。  次に、Sheet3のコピーシートを各学校の学科の数だけ作成して下さい。    後は、Sheet3以降の各シートのA2セルに校名を、B2セルに学科名を、それぞれ入力すれば、抽出結果が表示されます。

pusuta
質問者

お礼

回答ありがとうございました。 まさに思っていた通りの処理ができて感激しました。 他のデータ処理にも使えそうです。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

今日同じような質問に答えた。 フィルタオプションの設定を使う。 http://okwave.jp/qa/q6730341.html 例のデータが違うが、これのとおりにやってみて要領を会得すれば良い。 >並び順は右端のコード順,なおかつ組・番順になると良いのですが…。 並び順は「並べ替え」の操作をして、マクロの記録を採って勉強をすること。

pusuta
質問者

お礼

回答ありがとうございました。 マクロが使いこなせるようになると便利ですね。

すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 エクセルのグレードの記載がありませんので操作ヒントを記載のみとしています。 操作が不明の場合、以下の「」内のキーワードで検索して下さい。 (1)先ずは表を「並び替え」(第1優先キーを校名、次優先キーをコード、次優先キーを組等)    並び替え時に先頭のデータを見出し行として使用するのチェックを付けて下さい。 (2)「オートフィルタ」を設定して、校名フィルタダウンボタン(多分、列結合しているので第一回枠に表示)で校名を選択、抽出された範囲をコピーして別シートに貼り付け(繰り返す)    

pusuta
質問者

お礼

回答ありがとうございました。 オートフィルタを使っていちいち貼り付けるのが面倒だったので,何か良い方法はないかなと思ってたもので…

すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

分かり易い方法は作業列を作って対応することです。 志望校一覧がシート1に有るとしてG3セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A3="","",F3*10000+A3*100+B3) 学校学科別にはシート2に表示させるとしてA1セルからF2セルまでの間にはシート1と同じ項目名を入力します。 その上でA3セルには次の式を入力してF3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$G:$G,SMALL(Sheet1!$G:$G,ROW(A1)))=0,"",INDEX(Sheet1!$A:$F,MATCH(SMALL(Sheet1!$G:$G,ROW(A1)),Sheet1!$G:$G,0),COLUMN(A1)))

すると、全ての回答が全文表示されます。

関連するQ&A