適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話やポイ活など気になったことも載せているブログです。

【Excel】Split的なことをやるユーザー定義関数【VBA】

ワークシート上でテキストを分割したい。

ワークシート関数でやれないことはないけど何か直観的じゃない。

そう思ったのでちょい使い用のユーザー定義関数を作ったので備忘録がてら書き残しておきます。

何の話?

aaaa,bbbbbb,cccc

↑こういう文字列に対して「カンマで区切った2番目の要素を抜き出してくれ!」を実現したかった。

Excelつながりで言うとVBAのSplit関数的なことをワークシート上で直観的に(個人的感想です)やりたい。

Excelのユーザー定義関数を作成した

というわけでVBAで以下のユーザー定義関数を作成しました。

 
Public Function FUNC_SPLIT(文字列, Optional 区切り文字 = ",", Optional インデックス = 1)
    FUNC_SPLIT = Split(文字列, 区切り文字)(インデックス - 1)
End Function

中身はたったの1行です。

インデックスは1から始まります。

区切り文字のデフォルトはカンマ、インデックスのデフォルトは1番目です。

簡単な使い方の例

1番目の要素を抜き出す

=FUNC_SPLIT("aaaa,bbbbbb,cccc")

aaaa

2番目の要素を抜き出す

=FUNC_SPLIT("aaaa,bbbbbb,cccc",,2)

bbbbbb

注意点

調子に乗ってたくさんのセルに使うと重いです。

ユーザー定義関数の宿命です。

基本使い捨てがいいかもしれません

また、ただでさえ遅いユーザー定義関数なのでエラー処理を組み込んでいません。

使われる場合はその辺りを理解してご利用ください。

終わりに

「カンマで区切った2番目の要素を抜き出してくれ!」を実現するユーザー定義関数の紹介でした。

ちなみにカンマ以外の区切り文字でも可能です。

簡単な内容ですが、備忘録ということであしからず。

というわけで、ここまでお読み頂きましてありがとうございました。