【VBA】CSVファイルの部分一致で配列に格納する方法
手作業で大量のデータの中から特定のキーワードを持つ行を探すのは時間がかかります。この記事では、CSVファイルから部分一致する文字列を含む行を抽出し、効率的に配列に格納する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub CSVPartialMatchToArray()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Dim csvFilePath As String
csvFilePath = "C:\path\to\your\file.csv"
'CSVファイルを読み込む
Dim fileContent() As String
fileContent = Split(FileToString(csvFilePath), vbCrLf)
'配列に格納するための変数
Dim resultArray() As Variant
ReDim resultArray(1 To 1, 1 To 1)
Dim lastRow As Long
lastRow = UBound(fileContent) + 1
Dim i As Long
'部分一致する行を配列に格納
For i = LBound(fileContent) To lastRow - 1
If InStr(1, fileContent(i), "部分一致文字列", vbTextCompare) > 0 Then
ReDim Preserve resultArray(1 To UBound(resultArray, 1) + 1, 1 To 1)
resultArray(UBound(resultArray, 1), 1) = fileContent(i)
End If
Next i
'結果を表示
ws.Range("A1").Resize(UBound(resultArray, 1), 1).Value = Application.Transpose(resultArray)
End Sub
'CSVファイルの内容を文字列として読み込む関数
Function FileToString(ByVal filePath As String) As String
Dim fileNum As Integer
fileNum = FreeFile
Open filePath For Input As #fileNum
FileToString = Input$(LOF(fileNum), #fileNum)
Close #fileNum
End Functionよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。