【Excel/VBA】指定した文字の間を抽出する
みなさんこんにちは。
VBAではセルの情報を引っ張って文字列操作するという作業が多く発生します。
Left関数やRight関数等、文字列系の関数を駆使して自分がやりたい
文字列操作を実現させることが腕の見せどころであります。
今回は、特定の文字の間の文字列を抽出するコードについて書きます。
私は、スクレイピングでよく使用するため、備忘録としてご活用ください。
(最近この手の内容はChatGPTで解決すると思うとすごい時代が来たなと思う今日この頃。。)
この記事はこんな人におすすめ
・VBAプログラミング:初級者~中級者の人
・サクッと調べてコードをゲットしたい人
やりたいことの例
りんごちゃん「わたしはりんごが大好きです。」と言いました。
という、一文があったとします。
「」の文字の間の”わたしはりんごが大好きです。”という文字列を抽出したいというシチュエーションです。
コードの内容
Main関数
Sub main()
Dim str1 As String
Dim str2 As String
str1 = "りんごちゃん「わたしはりんごが大好きです。」と言いました。"
' 第一引数:抽出下の文字列
' 第二引数:抽出したい先頭の文字列
' 第三引数:抽出したい末尾の文字列
str2 = StringExtraction(str1, "「", "」")
Debug.Print str2 ' 出力結果 ”わたしはりんごが大好きです。”
End Sub
囲まれた範囲内の文字を抽出する
Function StringExtraction(ByVal text As String, _
ByVal startChar As String, _
ByVal endChar As String) As String
Dim l As Long
Dim r As Long
l = InStr(text, startChar)
r = InStrRev(text, endChar)
StringExtraction = Mid(text, l + 1, r - l - 1)
End Function
最後に
StringExtractionの第一引数、第二引数、第三引数をそれぞれ抽出したい文字列にして使用すると、
この記事を読んでくれた人の作りたいものになっているのではないかと思います。
ものすごく小ネタですが、
意外と頻出する内容化と思いますので、覚えておくと良いかと思います。
最後まで読んでいただきありがとうございました。
では ノシ