データベースサーチ
Excelのシート間でデータベースの検索を行い、条件に合致する結果を抽出する
Sub データベースサーチ()
Dim Lastrow1 As Long, LastCol1 As Long
Dim sStr As String
Dim dataDB As Variant
'DB(検索するシート)を指定する
With ActiveSheet.Next
Lastrow1 = .Cells(.Rows.Count, 1).End(xlUp).Row
LastCol1 = .Cells(1, Columns.Count).End(xlToLeft).Column
dataDB = .Range(.Cells(1, 1), .Cells(Lastrow1, LastCol1)).Value
End With
'抽出するシートを指定する
With Worksheets("検索")
sStr = .Range("A2").Value
'検索結果削除
Lastrow1 = .Cells(.Rows.Count, 1).End(xlUp).Row
If Lastrow1 >= 4 Then
.Range(.Rows(4), Rows(Lastrow1)).Delete
End If
'項目取得
With .Range(.Cells(4, 1), Cells(4, UBound(dataDB, 2)))
.Value = dataDB
.Interior.Color = RGB(255, 255, 0)
End With
'検索結果
Lastrow1 = 4
For i = 2 To UBound(dataDB, 1)
Dim memo As String: memo = ""
For j = 1 To UBound(dataDB, 2)
memo = memo & dataDB(i, j)
Next j
If memo Like "*" & sStr & "*" Then
Lastrow1 = Lastrow1 + 1
For j = 1 To UBound(dataDB, 2)
.Cells(Lastrow1, j) = dataDB(i, j)
Next j
End If
Next i
'表の枠組み
.Range(.Cells(4, 1), Cells(Lastrow1, UBound(dataDB, 2))) _
.Borders.LineStyle = xlcontinous
End With
MsgBox "完了"
End Sub
解説
- 3-5行目:変数の宣言
- Lastrow1、LastCol1、dataDB、sStrの各変数を宣言しています。
- Lastrow1は、データベースの最終行を格納する変数です。
- LastCol1は、データベースの最終列を格納する変数です。
- dataDBは、検索対象のデータベースを格納するための配列です。
- sStrは、検索条件の文字列を格納する変数です。
- 7-12行目:データベースの取得
- With ActiveSheet.Nextの部分で、検索対象のデータベースが格納されているシートを指定しています。
- Lastrow1とLastCol1を取得して、データベースの範囲を設定します。
- dataDBにデータベースの範囲を格納します。
- 14-27行目:検索結果の抽出
- With Worksheets(“検索”)の部分で、検索結果を出力するシートを指定します。
- sStrに検索条件の文字列を格納します。
- 検索結果の削除を行います。
- データベースの項目を取得して、検索結果シートに出力します。
- データベースの各行を検索して、条件に合致する場合には検索結果シートに出力します。
- 29-32行目:表の枠組み
- 表の枠組みを設定しています。
コメント