• ベストアンサー

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

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

  • pusuta
  • お礼率61% (636/1042)

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

  • ベストアンサー
  • 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/17068)
回答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

  • EXCELの表からの「抽出」、「転記」

    1.元帳(Sheet8)から転記した「金融機関向け提出資料」(Sheet10)があったので、こ れからまた転記して組単位で「No.」と「氏名」の表(Sheet5)を作りたいので  す。 2. 添付画像「金融機関向け提出資料」(Sheet10)において、9組を例にとると、No.7、No.16、No.17、No.23の、以下続  く。これ等をSheet5の表に抽出していきたいのです。Sheet5の構想は、1行目:組 番号、2行目は項目名:No.(A2)と氏名(B2)、3行目~27行目(25名分)に各  データを 抽出、転記する。一組分の範囲はA1:B27です。 3.組の数は9組ありますが、一組だけその方法を教えて頂ければ結構です。 4.尚、Sheet10のNo.は1~188です。Sheet10のG列に、組番号を転記しています。こ の組番号はSheet10では印刷領域外です。 5. Sheet10からSheet 5に抽出し、転記した最初の人の(1)No.と(2)氏名をオートフィ ルで下にコピーすると、同じ組のNo.と氏名が表示されたら良いのですが・・・。 6.私はマクロが使えません。INDEX関数やMATCH関数は使ったことがあります。 元帳(Sheet8)からINDEX関数で「金融機関向け提出資料」(Sheet10)に転記して います。 7.最初から9組分の表を作成しておいて、そこにデータを順次転記していく方法もあ るのかも知れません。 8.Sheet10の一部を「画像添付」します。 以上ですが、よろしくご指導ください。

  • 別シートに任意のセルを転記する方法について

    縦に6行ずつのデータがあり、これを横1行の別シートに転記する際に、 以前こちらで回答頂いた方法を応用したいと考えています。 =IF(INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))=0,"",INDEX(Sheet1!$Z:$Z,(ROW(A1)-1)*6+COLUMN(A1))) アドバイスのとおり、上記の数式で見事に横にデータが転記できました。社員1人につき6行ずつのデータが縦にならんでおり、これを別の社員1人あたり1行で横に並んだデータにしたいというものでした。 1人目のデータは1行目を1列目に、2行目を2列目に・・・2人目のデータである7行目を1列目に、8行目を2列目に・・・3人目は13行目を1列目に・・・となります。 しかし、順次並べるのではなく、転記の必要にないデータを含むシートの任意のセルを選び、別シートの任意のセルへ転記する必要が生じたため、悩んで路頭に迷っております。。。 例えば、6行ずつのデータのうち、いつも3行目を別シートの5列目に。4行目は転記せずに、5行目を6列目に。また、6行目を7列目に転記せずに10列目に転記する。(8・9列目は、別データを入力するため空白にしたい) そして、社員2人目である7行目からは、上記と同じ規則で転記したい。 などというように、選んで転記する方法は何かありますでしょうか?? =INDEX(Sheet1!$Z:$Z,(ROW(B2)-ROW($B$2))*6+IF(COLUMN()=4,MOD(COLUMN(B2)-1,6)+1,MOD(COLUMN(B2)-1,7))) のようにしても上手くいきません。 何卒宜しく御願いいたします。

  • 【VBA】元シートの内容を別シートへ転記する方法2

    添付のピクチャの様に、元シートが有ります。(行数は変動します) 元シートの数式・書式を維持したまま転記出来るコード をご教示願います。既存のコードで特に困った点は、ピクチャのコメント部分です。 行いたい事は下記です。 ----------------------------------------------------------------------------- 2シート目へ元シート1行目の見出しと品番010の行を転記 3シート目へ元シート1行目の見出しと品番222の行を転記 4シート目へ元シート1行目の見出しと品番222の行を転記 5シート目へ元シート1行目の見出しと品番033の行を転記 同様に、A列の最終の品番迄、繰り返しシートを作成 ------------------------------------------------------------------------------ どうぞ宜しくお願い致します。 ※「切り取り」で別シートを作成する方法でも結構です。

  • 抽出したデータを別のシートに転記する方法

    親データ(700行程度)を収納したシートからある属性のデータを抽出し、別シートに転記する方法として、以下のようにしています。まず親データからオートフィルターを使用してある属性データを抽出します。表示されたデータをコピーして別のシートに貼り付け、属性ごとのデータシートを作成していますが、親データシートに変更を加えたとき、別シートにその変更内容が反映されるようにしたいのです。実は自治会の会員のデータ管理をしていますが、人の移動が頻繁なので、会費徴収などの定期的な事務作業については、それぞれのシートに変更した部分を手作業で修正入力していますが、親データとの整合性が取れずに、データの訂正もれや重複などがあり、手続きに不備がでてしまっています。 具体的な作業としては、まず親データシート(会員台帳)の基本データの最新化をします。その結果が自動的に分割した別シート1、シート2のデータに反映されることが不可欠。この分割したデータシートは案内書や請求書などワードで作成した文書の差し込み印刷データに使用していますので、それぞれ別々のブックとして属性ごと、たとえば1区、2区などの名前を付けて保存しています。解決策としてエクセルのオートフィルタや関数を使ってできればいいと思っています。マクロはまだ未経験で少しかじりかけていますが、すぐには使いこなせないので、何とか簡便なほうほうが望ましいのです。また自治会役員は年度ごとに交代するので、あまり専門的なこった内容にしたくないのです(前任者が作ったものを利用していますが、不備や差し込みデータとしての利用ができず、基本データのみを利用して再度整理しなおしているところです)。初歩的な質問で恐縮ですが、よろしくお願いします。

  • EXCEL データの抽出と転記

    1.添付ファイル(JPEG)では、Sheet 10とSheet 5を両方表示しています。同じブッ ク内ですが、当然分離しています。 2.やりたいことはSheet 10からデータを抽出してSheet 5に転記することです。   Sheet 5の9組に、その例を表示しました。 3.Sheet 5には25名分を表記しています。組はランダムです。 4.Sheet 10では、実際の組の数は全部で9つあり、No.は188あります。氏名と組には ところどころ空白があります。(不在者です) 氏名は昇順とは限りません。  それに対応できる「計算式」をお願いします。 5.私はEXCELに詳しくありません。マクロが使えません。Sheet 5の組がランダムに 表記されているので、どう抽出したらよいのか困っています。「〇〇関数を使えば よい」の回答は不要です。具体的な計算式での回答をお願いします。  尚、私はINDEX関数やMATCH関数は使いますが、VLOOKUP関数は使いません。 7.過日一度質問を投稿したのですが、私の不手際で「プライバシーの侵害につながる恐れのある内容が含まれていた」と判断されてしまいました。そして添付ファイルを削除され、質問の内容を編集されました。結果、質問の内容が回答者には伝わらなくなってしまいました。今回は質問の仕方を変えて再投稿しています。今度の添付ファイルは問題がないと思っています。 説明が長くなってしまいました。 よろしくご指導下さい。

  • データ転記。うまく転記できないシートがあります。

    エクセルのデータ転記について助けてください。 現在 エクセルで職場で使用する現金出納帳を作成中です。完成間近なのにつまずいてしまいました。 作成にもう長い時間かかっるので今週中になんとか仕上げたいのです。 (職場での周りの目がこわくって・・・) どうかどうかよろしくおねがいします。 *各シートの説明 【シート1(元帳)】は記入用シート(1年間の経費等の入力をします) A1は表題 2行目はタイトル行で B列:月日、C列:曜日、:D列:経費部門コード(以下部C)、E列:経費部門名(D列の部C入力時に他シートにあるデータベースからLOOKUPで抽出して表示するようにしてます) F、G列は手入力用の内訳や備考の列、H列:収入金額、I列:支払金額、J列:差引残高。(I・J列は転記必要なしです) データはB3(日付)から入力します。 データ表の範囲はとりあえず100行目まで(A1からJ100) 【シート2~シート16(シート名はD列の経費部門コード番号です)】 こちらが転記先シートです。 A1に部門コード、B2に部門コード名(A1のコードでデータベースより抽出)2行目はB列:月日、C列:曜日、D、E列:内訳、備考、F:支払金額 【シート17(経費部門コードのデータベース)】 部門番号と部門名を表にして 元帳で入力の際 ここからひっぱってくるようになっています。 番号は15種類(経理上不規則な番号):1・2・4・5・6・7・8・9・10・12・20・21・22・仕・給(これをシート名にしてます) *希望する完成仕様 元帳(シート1)に入力したデータが同時に部門C別シート(15種類)に必要な項目だけ転記される。必要な項目は上記のシート説明参照。 *現在の作成状況 ・元帳のシート A3に'=COUNTIF($D$3:D3,D3)&D3 以下 A列はA3をコピー ・15枚の部門番号のシート B3(転記初期行)に'=IF(ISERROR(VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)),"",VLOOKUP(ROW(元帳!A1)&$A$1,元帳!$A$1:$I$100,2,0)) C3,D3,E3,F3列はB3をコピーしLOOKUPの列番号を変更 *現在の状況と問題点 シート4・5・6・7・8・9・10・12・20・21・22はきちんと転記する。 シート1(部門C:1)は部門C:1と部門C:21のデータが転記されてしまう シート2 (部門C:2)は部門C:2と部門C:12と部門C:22のデータが転記されてしまう。 この2つのシートは 下1桁でひっぱってきてしまってるのは分かるのですが改善方法が分かりません。 どうかこの2シートがきちんと動く数式を教えていただけるでしょうか? 文章力不足のため 質問の理解にさぞ悩まれるでしょうがどうぞよろしくお願いします。 補足:01 02 04と 二桁でもしてみましたが反応は同じ。 よく分からなくて セルの表示変えても値は1・2・4になってしまうんです・・。 結局よく分かりませんでした。

  • Excel VBA データの転記

    Excel2003を使用しています。 Sheet1のB1セルとSheet2のB1セルのデータが一致したら、Sheet2のB1セル~E1セルのデータをSheet1のF1セル~Iセルに転記するというコードを書いています。 Sheet1のデータ最終行を取得して、上記の条件を満たさなかったSheet2のB1セル~E1セルのデータをSheet1のデータ最終行の1行下から順に転記するという内容を追加したいのですが、転記先の指定の仕方が悪いのか、希望通りになりません。 どなたか一例を示していただけないでしょうか? スマホからの投稿で、実際に書いているコードを記載できず、分かりづらくて申し訳ないのですが、よろしくお願いします。

  • データが詰まったシートから、別のシートに空の行を入れて転記するには?

    シート1のA1に1,A2に2,A3に3,A4に4,A5に5と入力。 シート2にシート1のデータを次のような形で転記するにはどうしたらよいで しょうか? A1に1(=Sheet1!A1),3行空けてA5に2(=Sheet1!A2),3行空けてA9(=Sheet1! A3)に。 といったように3行空けて転記したいのですが。

  • エクセルで抽出したデータを別シートにコピーしたいです

    エクセル2003を使用しています。 例えば、以下のような表があります。  ABC 1あ10 2い15 3あ20 4 A列が条件となり、たとえば「あ」のデータだけ抽出して、そのデータを別シートにコピーします。 同じく「い」だけを抽出して、また別のシートにコピーします。 いままでは、オートフィルタで抽出して自分でコピーをして貼り付けしていましたが、日々データが次の行に追加になるので、毎回オートフィルタしてコピーするのは大変です。 関数か、マクロかVBAを使ってする方法はありますでしょうか。 できれば日々追加になるデータのみをすでにある別シートの前日までのデータの下に追加できるようになればいいと思うのですが。 知識が乏しくできません・・・ よろしくお願いいたします。

  • マクロで別シートの検索と別シートへの転記

    windows7、エクセル2013です。 Sheet1のA列の値を上から順に、Sheet2のA列内を検索し 同じ値が有ればその値を Sheet3のB列の5行目から順番に転記したいです。 Findを使ってうまくできないので Countifを使いましたが、駄目でした。 関数で可能なら関数でもいいのですが、教えていただきたいです。 よろしくお願いします。 Sub 抽出転記() Dim 検索行 Dim 検索値 Dim 答 Dim 入力行 入力行 = 5 For 検索行 = 3 To 200 検査値 = Worksheets("Sheet1").Cells(検索行, 1) If Worksheets("Sheet2").Columns("A").CountIf(検索値) <> 0 Then 答 = 検索値 Worksheets("Sheet3").Cells(入力行, 2) = 答 入力行 = 入力行 + 1 End If Next 検索行 End Sub

専門家に質問してみよう