• ベストアンサー

EXCELの検索結果を別シートに貼り付けたい

学校で事務を行っています。 成績の管理をエクセルで行っているのですが、特定の生徒について成績データを 取り出したく、質問をお願いします。m(_ _)m 作成した成績データSheetのうち、番号を指定した生徒について、成績取込Sheetに 教科コードが一致する教科の点数・生徒番号・生徒氏名をVBAを使用して貼り付け たいのですが、どのようすればよいでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 画像がはっきり確認できないのですが、 「成績取込」Sheetにユーザーフォームを配置しているのでしょうか? 今回はユーザーフォームではなく、「成績取込」SheetのA1セルに「生徒番号」を入力してマクロを実行する方法にしてみました。 尚、「成績取込」SheetのA・B列は入力済みだとします。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub 抽出() Dim i As Long, k As Long, endRow As Long, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("成績データ") Set wS2 = Worksheets("成績取込") endRow = wS2.Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False Range(wS2.Cells(5, "C"), wS2.Cells(endRow, "E")).ClearContents For k = 5 To wS2.Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To wS1.Cells(Rows.Count, "A").End(xlUp).Row If wS1.Cells(i, "C") = wS2.Range("A1") And wS1.Cells(i, "A") = wS2.Cells(k, "A") Then With wS2.Cells(k, "C") .Value = wS1.Cells(i, "C") .Offset(, 1) = wS1.Cells(i, "D") .Offset(, 2) = wS1.Cells(i, "E") End With End If Next i Next k Application.ScreenUpdating = True End Sub こんな感じではどうでしょうか?m(_ _)m

garageking
質問者

お礼

ご回答いただきありがとうございます。 教えていただいたとおりに実行したところ、無事に動きました。 本当に助かりました。

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

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

画像ではよく見えませんが,生徒番号を何かに記入させるようにしてるのですか。 とりあえずシート上に配置したアクティブXコントロールのテキストボックスに記入する事にします。 ユーザーフォームをわざわざ表示しているのでしたら,適切に応用して下さい。 手順: テキストボックスのプロパティでリンクするセルをB2セルに設定する C5セルには =IF(COUNTIFS(成績シート!A:A,A5,成績シート!C:C,$B$2)=1,$B$2,"") と記入,以下コピーしておく D5セルには =IF(C5="","",VLOOKUP(C5,成績シート!C:D,2,FALSE)) と記入,以下コピーしておく E5セルには =IF(C5="","",SUMIFS(成績シート!E:E,成績シート!A:A,A5,成績シート!C:C,C5)) と記入,以下コピーしておく 以上でB2セルにリンクさせた生徒番号により,所定の内容が現れます。マクロを使うまでもありません。 (ワークシート上,つまりB2セルに直接生徒番号を記入するように作成した方が,もっと簡単ですが) >マクロ 以上の段取りをマクロで実現します せっかくなのでテキストボックスのチェンジイベントで自動駆動してみます。 private sub TextBox1_Change()  if application.countif(worksheets("成績シート").range("C:C"), textbox1.value)>0 then   range("B2") = textbox1.value   range("C5:C17").formula = "=IF(COUNTIFS(成績シート!A:A,A5,成績シート!C:C,$B$2)=1,$B$2,"""")   range("D5:D17").formula = "=IF(C5="""","""",VLOOKUP(C5,成績シート!C:D,2,FALSE))"   range("E5:E17").formula = "=IF(C5="""","""",SUMIFS(成績シート!E:E,成績シート!A:A,A5,成績シート!C:C,C5))"   range("C5:E17").value = range("C5:E17").value  end if end sub テキストボックスに記入すると,自動反映します。

全文を見る
すると、全ての回答が全文表示されます。
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

まるで、フィルターオプションを使ってみてくださいと 云わんばかりの質問ですね。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm のサイトに説明があります。 最後の方にVBAのコードもありますし、マクロの記録で十分な形が得られます。

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

関連するQ&A

  • 1シート内にまとめられているデータを分割してコピーし、それを別の複数の

    1シート内にまとめられているデータを分割してコピーし、それを別の複数のシートにペーストする方法があれば、教えて下さい。 例えば、学校の成績を、教科ごとに表示するシートから、生徒ごとに表示するシートへとデータをコピーする、なんていう場合を想定して下さい。 <教科のシート> シート1:国語のテストの点数表(生徒1~3の点数の一覧) シート2:数学のテストの点数表(生徒1~3の点数の一覧) シート3:英語のテストの点数表(生徒1~3の点数の一覧) <生徒のシート> シート101:生徒1の英数国の点数 シート102:生徒2の英数国の点数 シート103:生徒3の英数国の点数 という場合、 シート1から、生徒1の国語の点数をコピーし、シート101へペースト。 シート1から、生徒2の国語の点数をコピーし、シート102へペースト。 シート1から、生徒3の国語の点数をコピーし、シート103へペースト。 シート2から、生徒1の数学のテンスをコピーし、シート101へペースト。 シート2から、生徒2の数学の点数をコピーし、シート102へペースト。 シート2から、生徒3の数学の点数をコピーし、シート103へペースト。 シート3から、生徒1の英語の点数をコピーし、シート101へペースト。 シート3から、生徒2の英語の点数をコピーし、シート102へペースト。 シート3から、生徒3の英語の点数をコピーし、シート103へペースト。 という具合に、コピー・ペーストを『自動化』して、行いたいのですが、 このようなことは可能でしょうか? (実際のデータは、教科数も生徒数も、もっと沢山あります。) 方法としては、マクロ(VBA)を利用したものでも結構です。 どなたかお詳しい方、お力をお貸し下さい。 必ずお返事致します。(ポイント付与も確実に行います。)

  • エクセルで項目ごとに新しい別のシートにしたい

    エクセルで名簿を作成しています。 C列に生徒番号、D列に氏名、E列にクラスがAからFまでランダムに入っています。 この名簿を新しいファイルに、クラスごとに別のシートにしたいです。 できればシート名も「A」「B」となっていれば助かります。 A,B列にもデータが入っていますが、今回は生徒番号、氏名、クラスのみの ファイルにしたいです。 良い方法を教えてください。よろしくお願いします。

  • Excel VBAを使って会員検索

    Sheet1のA列に会員番号、B列に氏名、C列にフリガナ、D列に住所といったデータがあります。 Sheet2のA列に会員番号のみがあります。 この2つのデータを照合して、一致した場合のみ、Sheet1の該当会員データの横のセルに“一致”もしくは“1”などの値(上の例だとSheet1のE列に)を入力できるようなVBAを組みたいのですが、教えていただけますでしょうか?

  • エクセルで複数のシートからの検索

    エクセルの件でご質問です! 「複数のシートがあり、その中で条件の一致するシートを検索し、更にそのシート内の条件に一致するものを抽出したい」 となるとどのような方法でやるのでしょうか? 特定のシートから抽出するのは、IF文で可能かと思いますが、その前に複数のシートを検索してからとなると、わかりません。 VBAに関しては、まったくわからない状態です。関数等でできればご教授頂きたいと思います。 どうかよろしくお願いいたします。

  • Excel VBA 検索して該当行を抽出

    はじめまして、下記のように、Excelでマクロを組みたいのですが 組み方がわかりません。 ご教授願えませんでしょうか。 MS Ofiice2010 生徒数500名ほど シート1には生徒の生徒番号、氏名などがあります。      A     B     C     D 1 生徒番号   氏名   備考 2 120001     田中 3 120002     山田  試験時休み 4 T120009    相田   転入 シート2には生徒の成績表:生徒番号、氏名、国語、算数、理科、社会 生徒番号でソートされていません。      A     B     C     D     E     F    1 生徒番号   氏名   国語   算数   理科   社会   2 120001     田中   80    65     65     75 3 T120009    相田   90    85     80     80 シート1の生徒番号でシート2生徒番号を検索して、該当したら成績を シート1の検索した生徒番号のD列以降にコピーしたいのですが      A     B     C     D     E     F     G 1 生徒番号   氏名   備考   国語   算数   理科   社会 2 120001     田中         80    65     65     75 3 120002     山田  試験時休み 4 5 10 T120009    相田   転入    90    85     80     80 お手数ですが、ご教授願えますでしょうか。 よろしくお願いいたします。

  • VBAを使って検索したセルを別のシートにコピーする

    こんにちは。 業務でエクセルを使用して差し込み文書を印刷しています。 量が多いのでVBAを使って簡単に作業したいです。 まず、以下のようなシートがあります。 <Sheet1>差込文書 <Sheet2> (A)  (B)    (C)     (D) (E)  (F) 番号|会社名|支店名|役職名|氏名|会社、支店名、役職名、氏名 次のような作業をさせたいです。 1.<sheet2>のA列と同じ番号が<sheet1>の(L1)にあるかどうか検索する。 2.もし、一致するセルがあれば、<sheet2>の該当番号の行のF列を<sheet1>の(B5)にすべて(書式ごと)コピーする。 以上です。 VLOOKUP関数でしましたが、すべてをコピーする事ができなかったので、VBAでコピーしたいです。 F列は、個人名だけの方、支店がない会社などがあるため、バランス良く配置しているセルです。 よろしくお願いします。

  • Excel VBA 特定した曜日の検索

    Excel VBA初心者です 毎月の第2金曜日だけのデータを検索し別のシートに貼り付けようとしています。 しかし特定の曜日を検索するコードをどのようにすればいいのかわかりません。 A列に月日(7年位)、B列に金額のデータ、C列にコメントが入っています。 ※データの貼り付けはサンプルコードで何とかなりました。 どなたか教えてください。よろしくお願いします。  

  • excelのデータ抽出?検索?についておしえてください。

    excelのデータ抽出?検索?についておしえてください。 エクセル2003で sheet1に次のようなデータがあります。   A列  B列  C列     D列  E列 ・・・ 1 組   番号  氏名     古典  現文 ・・・  2 1   1   青木 優    3 1   2   池田 洋子   4 1   3   植村 美紀   ・ ・ sheet2には1組の成績が sheet3には2組の成績が入っています。 クラスによって科目が違います。 この「氏名」と1行目の「科目名」が一致するデータを 他のシートから読み出してくる関数がありませんでしょうか 青木さんの古典を1組のシートから読み出すといった感じです。 説明がへたで 申し訳ないのですが うまく検索ができなくて困っています。 ぜひ くわしいかた教えてください。 どうぞ よろしくおねがいします。

  • エクセル複数シートからの検索

    部門別住所録が、部門毎に別シートにあります。 各シートのデータは以下のように並んでいます。 社員番号、氏名、住所、電話番号、生年月日。 この状態で、任意の項目(例えば氏名)を指定して社員番号とか電話番号など一行分のデータを検索する方法(関数の使い方)を教えて下さい。 INDEX関数とMATCH関数でやってみましたが、シートを跨ると上手くいきません。 よろしくお願いします。

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

このQ&Aのポイント
  • MFC-J6983CDWでスキャン to クラウドをした際、アップされたPDFデータが原稿の一部分のみになってしまいます。全体をうつす方法を教えてください。
  • WindowsでMFC-J6983CDWを無線LAN経由で接続しています。スキャン to クラウドをする際に、アップされたPDFデータが原稿の一部分のみになってしまいます。どうやって全体をうつすことができるでしょうか?
  • MFC-J6983CDWでスキャン to クラウドをすると、アップされたPDFデータが原稿の一部分のみになっています。どうしたら全体をうつすことができるでしょうか?
回答を見る

専門家に質問してみよう