VBAを使った文字列の切り出し【 文字列を操作する関数を紹介】

エクセルを使って仕事をしていると、セルに入力されたテキストを関数で操作したいってときありますよね。

・テキスト内の日付だけを取得したい

・テキスト内の()の中を取得したい

・テキスト内の数値を取得したい

 

大量のデータ扱う場合、このような作業を手作業でやるのは時間がいくらあっても足りません。テキストを操作する関数を使えば、めんどうなテキスト編集を一瞬で処理できるようになります。


 

文字列の切り出し① ()の中を切り出す方法

文章内で () カッコ書きされている内容って重要なことが多いですよね。

私の仕事ではよくカッコの中の文字列を切り出すという作業があります。10個や20個の切り出し作業ならば手作業であっという間に処理できるのですが、100個、200個となると時間がかかって疲れ果ててしまいます。

そんなとき役立つのが文字列を切り出すVBAです。

これはかなり使えるVBAなので、一つのプログラムごと覚えるか、ブックマークすることをおすすめします。

 

切り出しVBAサンプル

1 Sub 切り出し()
2 On Error Resume Next
3 ds1 = InStr(Cells(2, 1), “(“)
4 ds2 = InStr(Cells(2, 1), “)")
5 df = Mid(Cells(2, 1), ds1 + 1, ds2 – (ds1 + 1))
6 Cells(2,2)=df
7 End Sub

結果

()の中を切り出すVBAは関数Instr関数Midの関数を組み合わせるだけで完成。さらにFor~Nextと組み合わせると作業効率が格段にアップさせることができます。
For~Nextの詳しい使い方は下記の記事で詳しく紹介しています。
サンプル

 

上記のようなデータ数が多い場合に、For~Next切り出すVBAの組み合わせが有効です。

 

1 Sub 切り出し2()
2 On Error Resume Next
3 gyo = Cells(Rows.Count, 1).End(xlUp).Row
4 For i = 2 To gyo
5 ds1 = InStr(Cells(i, 1), “(“)
6 ds2 = InStr(Cells(i, 1), “)")
7 df = Mid(Cells(i, 1), ds1 + 1, ds2 – (ds1 + 1))
8 Cells(i, 2) = df
9 Next
10 End Sub

 

結果

 

文字列を操作する関数① 関数InStr

関数Instrは文字列の中から指定した文字を最初から検索し、最初に合致した文字位置を返すもの。

 

基本構造

 

InStr( 開始位置 , 検索される文字列 , 検索する文字列 , 比較 )

開始位置 検索開始位置を指定
検索される文字列 元となる文字列を指定
検索する文字列 検索キーワードを指定
比較 大文字と小文字を区別して検索をするかを指定
vbBinaryCompare…区別する
vbTextCompare…区別しない

サンプル

1 Sub sample
2 Cells(2, 4) = InStr(Cells(2, 1), 3)
3 Cells(3, 4) = InStr(5, Cells(3, 1), “d")
4 Cells(4, 4) = InStr(5, Cells(3, 1), “b")
5 Cells(5, 4) = InStr(1, Cells(5, 1), “d", vbTextCompare)
6 Cells(6, 4) = InStr(1, Cells(6, 1), “D",vbTextCompare)
7 End Sub

結果

 

文字列を操作する関数② 関数Mid

関数Midは文字列の指定した場所から、指定した長さの文字列を返すもの。

基本構造

 

Mid( 対象となる文字列 , 切り出しをする開始位置 , 切り出す長さ[省略可能」 )

切り出す長さを省略すると、切り出し開始位置から最後の文字まで切り出すことになります。

 

サンプル

 

1 Sub sample()
2 Cells(2, 4) = Mid(Cells(2, 1), 1, 3)
3 Cells(3, 4) = Mid(Cells(3, 1), 3)
4 Cells(4, 4) = Mid(Cells(4, 1), 5, 5)
5 Cells(5, 4) = Mid(Cells(5, 1), 10)
6 Cells(6, 4) = Mid(Cells(6, 1), 11, 1)
7 End Sub

 

結果

文字列を操作する関数③ 関数Right

関数Rightは文字列の最後から指定した長さ分の文字列を返すもの。

基本構造

 

Right( 文字列 , 指定する長さ)

サンプル

1 Sub Sample()
2 Cells(2, 3) = Right(Cells(2, 1), 1)
3 Cells(3, 3) = Right(Cells(3, 1), 3)
4 Cells(4, 3) = Right(Cells(4, 1), 5)
5 Cells(5, 3) = Right(Cells(5, 1), 10)
6 Cells(6, 3) = Right(Cells(6, 1), 11)
7 End Sub

 

結果

 

文字列を操作する関数④ 関数Left

関数Leftは文字列の先頭から指定した長さ分の文字列を返すもの。

基本構造

 

Left( 文字列 , 指定する長さ )

サンプル

 

1 Sub Sample()
2 Cells(2, 3) = Left(Cells(2, 1), 1)
3 Cells(3, 3) = Left(Cells(3, 1), 3)
4 Cells(4, 3) = Left(Cells(4, 1), 5)
5 Cells(5, 3) = Left(Cells(5, 1), 10)
6 Cells(6, 3) = Left(Cells(6, 1), 11)
7 End Sub

結果

エクセル業務で文字列の切り出し作業は重要

手作業で文字列の操作をしていると時間がかかるうえに操作ミスが発生してしまいます。機械的な文字列の切り出し作業は関数を使えば一瞬で処理することが可能に!!

エクセルを使ったデスクワークが多い方におすすめです。

紹介した関数の情報は多くのエクセル参考書やネットで配信されています。もっと詳しく勉強したいという方は下記の記事でおすすめエクセル参考書を紹介しています。

テキストを操作するVBAをつくるときに関数は必ず必要なもので、今回紹介した4つの関数以外にも便利な関数はいっぱいあります。エクセル参考書を使って勉強してみてください。