📘 Excel逆引き事典

【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.
シート名や列番号が正しいか確認してください。