- ベストアンサー
別のシートにあるリストを表示する方法
- 検索シートから生徒シートの名前を検索したら検索シートに返されるようなマクロを作成する方法を教えてください。
- マクロを実行すると、検索シート上の指定したセルに該当する生徒の名前が表示されます。左側のセルには2行目と3行目の検索結果も返されます。
- もし該当する生徒がいない場合は、「該当者なし」というメッセージが表示されます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sub 名前検索() Dim ws1 As Worksheet Dim ws2 As worksheet Dim myrange As Range Set ws1 = Worksheets("生徒シート") Set ws2 = Worksheets("検索シート") Set myrange = ws1.Columns("C:C").Find(what:=ws2.Range("C100").Value, LookIn:=xlValues) If Not myrange Is Nothing Then ws2.Cells(102, "C").Resize(, 31).Value = _ myrange.Resize(, 31).Value Else MsgBox "該当者なし" End If End Sub データは双方A列からあり検索(生徒:C列)した結果、 ・見つかった場合、同行のC~AGのデータを転記(検索:C~AG) する。 ・見つからなかった場合、メッセージを出しておわり。 かな?
その他の回答 (1)
- n-jun
- ベストアンサー率33% (959/2873)
生徒シートの名前はC列からAG列まであるのですか? Sub 名前検索() Dim myrange As Range With Worksheets("生徒シート") Set myrange = .Range("C4:AG300").Find(what:=.Range("C100").Value, LookIn:=xlValues) End With If Not myrange Is Nothing Then Worksheets("検索シート").Cells(102, "C").Resize(, 3).Value = _ myrange.Offset(, -2).Resize(, 3).Value Else MsgBox "該当者なし" End If End Sub と言う事でしょうか?
補足
早速のご回答ありがとうございます。 すみません書き方を間違えました。 C列に生徒の名前が入っていますがD,E,F・・・・AG列に入っている 国語の点数や個人情報を"検索シート"の方で取り出したいと考えています。 なのでFind(what:=.Range("C100").Value, LookIn:=xlValues)は間違えでここを"検索シート"のC100に入れた文字と一致した行の値を"検索シート"に返したいと考えています。
お礼
すみません ありがとうございました。 完璧にやりたいことが出来ました。