[VBA] How to Split Strings by Colon to Extract Specific Data (Reading Dates from CSV)

目次

Background

When processing external CSV files, you often need to extract only a specific part of a text string contained in a cell.

For example, if cell A1 of a CSV file contains the string “Date:20240831”, you might want to retrieve only “20240831”.

To achieve this, I created a VBA macro that uses a colon (:) as a delimiter to split the text and extract only the necessary information.

How the Macro Works

This macro performs the following steps:

  1. Displays a dialog box to select a CSV file.
  2. Retrieves the string from cell A1 of the selected CSV (e.g., “Date:20240831”).
  3. Splits the string by the colon and extracts the value on the right side.
  4. Displays the extracted result in a message box.

VBA Code

Below is the code I used.

Private Sub SplitStringAndExtract()
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
    End With

    Dim csvFileName As Variant
    Dim csvWB As Workbook
    Dim rawDateStr As String
    Dim extractedDate As String

    ' Select CSV file
    csvFileName = Application.GetOpenFilename(FileFilter:="CSV Files (*.csv), *.csv", Title:="Please select a CSV file.")
    If csvFileName = "False" Then
        MsgBox "Process cancelled.", vbInformation
        Exit Sub
    End If

    ' Open CSV file and process
    Set csvWB = Workbooks.Open(Filename:=csvFileName)

    ' Get string from cell A1 (e.g., "Date:20240831")
    rawDateStr = csvWB.Sheets(1).Cells(1, 1).Value

    ' Split by Full-Width Colon ":" and extract the second part (the date)
    ' Note: The index (1) refers to the second element of the array
    extractedDate = Trim(Split(rawDateStr, ":")(1))

    MsgBox extractedDate

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub

Important Notes

  • Delimiter Type: The code above uses a full-width colon (“:”). You must check if your CSV data uses full-width or half-width characters.
    • If your data uses a standard half-width colon (“:”), please change the code to: Split(rawDateStr, ":")(1)
  • Split Function: This function divides a string into an array based on the specified delimiter.
  • Trim Function: This removes any extra spaces from the beginning or end of the extracted string.

Other Applications

This method is very versatile. You can use it for other formats, such as extracting a name from a string like “Name: John Doe”. It also works for data in regular Excel sheets, not just imported CSV files.

Summary

  • Use the VBA Split() function to easily divide strings by a specific character.
  • This is useful for automatically extracting specific data from fixed-format CSV files.
  • You can handle everything from file selection to data extraction in a single macro.
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次