大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使って、社員名簿から名前で絞りこみ検索するには、部分一致で名前を抽出して、ForとIfで検索するとできます。絞りこみ検索ができれば、検索値が大量にあった場合でも、効率的に検索できるようになります。絞りこみ検索する方法について、マスターしていきましょう。

はじめに

この記事では、社員名簿から名前で絞り込み検索する方法について、ご紹介します。

絞りこみ検索するには、部分一致で値を抽出して、ForとIfで値を検索するとできます。

絞りこみ検索ができるようになれば、検索値が大量にあった場合でも、効率的に値を検索できるようになります。

絞りこみ検索する方法について、マスターしていきましょう。

では、社員名簿から名前で絞り込み検索する方法について、解説していきます。

この記事を読むメリット

  • 社員名簿から名前で絞り込み検索する方法がわかります。

本記事の内容を動画にて解説しております。

本記事の内容を動画にて解説しております。

VBAコードの作成手順について、動画で確認できます。

目次から見たい項目へ移動すると便利ですよ。

目次

社員名簿から名前で絞りこみ検索したい

社員名簿から名前で絞りこみ検索してみます。

やりたい内容

やりたい内容は、名前を絞りこんで検索したい、ということになります。

名前を絞りこんで検索したい

名前を絞りこんで検索したいです。

名前を絞りこんで検索したいです

社員名簿から絞り込み検索をします。

社員名簿から絞り込み検索をします

名前で絞りこみ検索をしてみます。

絞りこみ検索をする

まず、絞りこむ値を入力します。

絞りこむ値を入力します

検索する名前を絞りこむことができます。

検索する名前を絞りこむことができます

名前を選択すると、値を検索することができます。

社員名簿から値を検索できる

名前を選択すると、値を検索することができます

名前を選択すると、値を検索することができました。

では、名前で絞り込み検索するVBAコードを作成していきます。

VBAコードを作成

社員名簿から名前で絞り込み検索するVBAコードを、ポイントごとに作成していきます。

検索フォームを作成

検索フォームを作成します。

検索フォームを作成

検索フォームを作成します

こちらの検索フォームに値を検索します。

絞りこむVBAコードを作成

絞りこむVBAコードは、次のようになります。

Sub TEST1()
  
  'シートをクリアする
  Sheets("検索").Range("H2:H1000").Clear
  
  '部分一致で抽出する
  j = 1
  For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
    If InStr(Sheets("DB").Cells(i, "B"), Sheets("検索").Range("G1")) > 0 Then
      j = j + 1
      '値を抽出する
      Sheets("検索").Cells(j, "H") = Sheets("DB").Cells(i, "B")
    End If
  Next
  
End Sub

「佐藤」で絞り込みをしてみます。

「佐藤」で絞り込み

「佐藤」で絞り込みをしてみます

VBAコードを実行すると、社員名簿から、「佐藤」を含む名前を抽出することができます。

社員名簿から、「佐藤」を含む名前を抽出することができます

社員名簿から、「佐藤」を含む名前を抽出することができました。

Changeイベントを作成

次は、Changeイベントを作成して、絞りこむ値を入力したタイミングで、名前を抽出してみます。

「検索」シートのシートモジュールにVBAコードを記載します。

Private Sub Worksheet_Change(ByVal Target As Range)
  
  '「G1」のセルが変更されたら実行する
  If Target.Address(False, False) = "G1" Then
    Call TEST1 '検索値を絞りこむ
  End If
  
End Sub

絞り込む値を入力してみます。

絞りこむ値を入力

絞り込む値を入力してみます

絞り込む値を入力したタイミングで、名前を抽出できます。

値を入力したタイミングで、名前を抽出できる

絞り込む値を入力したタイミングで、名前を抽出できます

絞り込む値を入力したタイミングで、名前を抽出できました。

入力規則のリストを設定

抽出した値からプルダウンリストを使って選択できるように、入力規則のリストを設定します。

入力規則を選択します。

入力規則を設定

入力規則を選択します

プルダウンリストに、抽出した値を設定していきます。

抽出した値をプルダウンリストに設定

入力値の種類を「リスト」として、元の値に数式を入力して、抽出した値を取得します。

入力する数式は、「=OFFSET($H$2,,,COUNTA($H:$H)-1)」という感じです。

入力値の種類を「リスト」として、元の値に数式を入力して、抽出した値を取得します

検索値にプルダウンリストを設定することができます。

検索値にプルダウンリストを設定することができます

プルダウンリストから検索値を入力することができます。

プルダウンリストから選択できる

プルダウンリストから検索値を入力することができます

プルダウンリストから検索値を入力することができました。

SendKeysを使う

絞りこみする値を入力したタイミングで、プルダウンリストを表示できるようにします。

使うVBAコードは、SendKeysになります。

Sub TEST1()
  
  'シートをクリアする
  Sheets("検索").Range("H2:H1000").Clear
  
  '部分一致で抽出する
  j = 1
  For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
    If InStr(Sheets("DB").Cells(i, "B"), Sheets("検索").Range("G1")) > 0 Then
      j = j + 1
      '値を抽出する
      Sheets("検索").Cells(j, "H") = Sheets("DB").Cells(i, "B")
    End If
  Next
  
  '検索するセルを選択する
  Sheets("検索").Range("G2").Select
  SendKeys "%{DOWN}" 'プルダウンリストを表示する
  
End Sub

絞り込む値を入力してみます。

絞りこむ値を入力してみる

絞り込む値を入力してみます

絞り込む値を入力したタイミングで、プルダウンリストを表示できます。

自動でプルダウンリストを表示できる

絞り込む値を入力したタイミングで、プルダウンリストを表示できます

絞り込む値を入力したタイミングで、プルダウンリストを表示できました。

これで、検索値を入力しやすくなります。

検索するVBAコードを作成

プルダウンリストで選択した値を使って検索するVBAコードは、次のようになります。

Sub TEST2()
  
  '値を検索する
  For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
    If Sheets("DB").Cells(i, "B") = Sheets("検索").Range("G2") Then
      Sheets("検索").Range("B3") = Sheets("DB").Cells(i, "A") 'ID
      Sheets("検索").Range("D3") = Sheets("DB").Cells(i, "C") '性別
      Sheets("検索").Range("B4") = Sheets("DB").Cells(i, "B") '氏名
      Sheets("検索").Range("B5") = Sheets("DB").Cells(i, "D") '部署
      Sheets("検索").Range("B6") = Sheets("DB").Cells(i, "E") '役職
      Sheets("検索").Range("B7") = Sheets("DB").Cells(i, "F") '生年月日
      Sheets("検索").Range("B8") = Sheets("DB").Cells(i, "G") '入社年
      Sheets("検索").Range("B9") = Sheets("DB").Cells(i, "H") '勤続年数
    End If
  Next
  
End Sub

検索する値を選択しておきます。

検索する値を選択しておく

検索する値を選択しておきます

名前で検索して、社員名簿から値を検索することができます。

社員名簿から値を検索できる

名前で検索して、社員名簿から値を検索することができます

名前で検索して、社員名簿から値を検索することができました。

Changeイベントを作成

プルダウンリストから値を選択したタイミングで、値を検索できるように、Changeイベントを作成します。

「検索」シートのシートモジュールにVBAコードを記載します。

Private Sub Worksheet_Change(ByVal Target As Range)
  
  '「G1」のセルが変更されたら実行する
  If Target.Address(False, False) = "G1" Then
    Call TEST1 '検索値を絞りこむ
  End If
  
  '「G2」のセルが変更されたら実行する
  If Target.Address(False, False) = "G2" Then
    Call TEST2 '値を検索
  End If
  
End Sub

プルダウンから名前を選択してみます。

プルダウンリストから名前を選択

プルダウンから名前を選択してみます

名前を選択したタイミングで、値を検索することができます。

選択したタイミングで値を検索できる

名前を選択したタイミングで、値を検索することができます

名前を選択したタイミングで、値を検索することができました。

おわりに

この記事では、社員名簿から名前で絞り込み検索する方法について、ご紹介しました。

絞りこみ検索するには、部分一致で値を抽出して、ForとIfで値を検索するとできます。

絞りこみ検索ができるようになれば、検索値が大量にあった場合でも、効率的に値を検索できるようになります。

絞りこみ検索する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す