VBAで特定の文字より前を抽出する方法|InStrとLeft関数の組み合わせで対応

目次

スポンサードリンク

文字列の中から「ある特定の文字や記号の前の部分だけを取り出したい」という処理は、VBAの文字列操作でよくあるパターンです。この記事では、InStr 関数と Left 関数を組み合わせて、特定の文字より前の文字列を抽出する方法を紹介します。

基本構文 InStr と Left の組み合わせ

特定の文字より前を部分的に取得したいときは、InStr 関数で文字の位置を調べ、Left 関数でその手前までの文字列を取得します。

以下の例では、”abc:def” の中から、コロン : より前の文字を取得しています。 InStr(str, “:“) は、文字列 str の中で : が登場する位置(番号)を返します。Left 関数は、その位置の1つ前までを切り出します。

Dim str As String
str = "abc:def"

Dim result As String
result = Left(str, InStr(str, ":") - 1)
' 変数 result の内容は "abc"

応用例 ファイル名から拡張子を除去する方法

下記の例では、ファイル名を含む文字列から「ドット . より前」の部分、つまり拡張子を除いたファイル名本体を取得する処理です。 この例では、InStrRev 関数を使って文字列の末尾からドットの位置を検索しています。

Dim file As String
file = "Document.xlsx"

Dim fileNameOnly As String
fileNameOnly = Left(file, InStrRev(file, ".") - 1)
' 変数 fileNameOnly の内容は "Document"

まとめ

このテクニックは、拡張子除去・ドメイン抽出・識別子の切り分けなど、文字列処理でよく利用されます。InStr や InStrRev を使うことで、前後の文字列抽出を柔軟に行えるようになります。

関連記事
VBAで特定の文字より後を抽出する方法|InStrとMid関数の組み合わせで対応


Excel VBAのテクニックを幅広く学べるおすすめ書籍
基本の定番ネタから応用的なテクニックまで、網羅的にテクニックを学べる書籍です。Microsoft365/Office2024対応。手元に置いておきたい一冊です。

中級者以上におすすめの書籍
VBAというプログラミング言語を本格的に学びたい人におすすめの書籍です。VBAの言語としての仕組みをしっかり理解したい人に。