ここから本文です

Excelのマクロについて質問です。

アバター

ID非公開さん

2019/5/1510:47:48

Excelのマクロについて質問です。

何千人もいる社員の研修を管理しています。
研修名を入力するとその研修を受けたことのある社員名だけが検出されるというものを作りたいです。

A1に名前がずらっと記載されており、
1行目には部署名だったり、あとは2019年5月など
年月が横に1年分並んでいます。

その年月の下に研修を受けたひとの所に研修名を記載するような形です。

分かりにくい質問かと思いますが、ダイアルボックスみたいなので研修名を入力して出るようにしたいです。

よろしくお願い致します。

閲覧数:
43
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

auq********さん

編集あり2019/5/1521:28:31

Sub test()

Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim LastRow As Long
Dim InputData As Variant
Set Ws1 = Worksheets("Sheet1")
Set Ws2 = Worksheets("Sheet2")
LastRow = Ws1.Cells(Rows.Count, 1).End(xlUp).Row
InputData = Range(Ws1.Cells(1, 1), Ws1.Cells(LastRow, 14))



Dim i As Long
Dim j As Long
Dim cnt As Long
Dim OutputData() As Variant
ReDim OutputData(1 To LastRow, 1 To 1) As Variant
Dim ShearchWrd As String


ShearchWrd = InputBox("研修名を入力して下さい")
If ShearchWrd = ""Then Exit Sub


For i = 2 To LastRow
For j = 3 To 14
If InputData(i, j) = ShearchWrd Then
cnt = cnt +1
OutputData(cnt, 1) = InputData(i, 1)
Exit For
End If
Next j
Next i


Ws2.Range("A:A").ClearContents
If cnt <>0 Then
Range(Ws2.Cells(1, 1), Ws2.
Cells(cnt , 1)) = OutputData
MsgBox cnt &"名ヒットしました。"
Else
MsgBox "研修名がみつかりませんでした"
End If

End Sub



氏名や研修名が入力されているシートの名前が「Sheet1」
検索結果を出力するシートの名前が「Sheet2」
と仮定して作成しています。

最初に入力ボックスが表示されますので研修名を入力して下さい。
Sheet1のC列~N列にその研修名があれば、検索にヒットした氏名の一覧がSheet2のA列に表示されます。

  • アバター

    質問者

    ID非公開さん

    2019/5/2119:30:31

    ありがとうございます!
    シート名とか変えてやってみます

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる