セットするユーザー定義関数 – 指定された長さで文字列を分割する
Excelには、文字列を操作するための多くの標準関数がありますが、特定の長さで文字列を分割する機能はありません。この記事では、ユーザー定義関数を紹介します。この関数は、指定された長さで文字列を分割し、区切り文字でつなげた新しい文字列を返します。関数名は「SPLITBYLENGTH」とします。
関数のコード
以下のコードをVBAエディタ(ALT+F11キー)から標準モジュールを開き貼り付けてください。
Function SPLITBYLENGTH(textString As String, delimiter As String, ParamArray splitLengths() As Variant) As String
Dim newText As String
Dim i As Long
Dim currentLength As Long
Dim currentPosition As Long
newText = ""
currentPosition = 1
For i = LBound(splitLengths) To UBound(splitLengths)
currentLength = splitLengths(i)
newText = newText & Mid(textString, currentPosition, currentLength) & delimiter
currentPosition = currentPosition + currentLength
Next i
' Add the remaining text
newText = newText & Mid(textString, currentPosition)
' Remove last delimiter
If Len(newText) > 0 Then
newText = Left(newText, Len(newText) - Len(delimiter))
End If
SPLITBYLENGTH = newText
End Function
貼り付け後はワークシートに戻ります。
関数の使い方
SPLITBYLENGTH関数の使い方は次のとおりです。
=SPLITBYLENGTH(対象の文字列, 区切り文字, 分割する長さ1, 分割する長さ2, 分割する長さ3, ...)
引数の説明
- 対象の文字列 – 分割したい文字列を指定します。
- 区切り文字 – 分割後の文字列をつなぐために使用する区切り文字を指定します。
- 分割する長さ1, 分割する長さ2, 分割する長さ3, … – 文字列を分割する長さを指定します。複数の長さを指定できます。
使い方の例
例1
次の例では、文字列「987654321987」を3文字と4文字の長さで分割し、ハイフンでつなぎます。
=SPLITBYLENGTH("987654321987", "-", 3, 4)
この式の結果は「987-6543-21987」となります。
例2
次の例では、文字列「abcdefghijklmn」を2文字、3文字、4文字の長さで分割し、スラッシュでつなぎます。
=SPLITBYLENGTH("abcdefghijklmn", "/", 2, 3, 4)
この式の結果は「ab/cde/fghij」となります。
注意点
SPLITBYLENGTH関数はVBAで作成されたユーザー定義関数です。使う前に、VBAエディタの標準モジュールにコードを追加する必要があります。エディタは「開発」タブの「Visual Basic」ボタンをクリックするか、「Alt」+「F11」キーで開くことがでことができます。追加したら、Excelで関数を使うことができます。
まとめ
SPLITBYLENGTH関数は、指定された長さで文字列を分割し、区切り文字でつなげた新しい文字列を返す便利なユーザー定義関数です。標準のExcel関数では実現できないこの操作を、簡単に実現できるようになります。ぜひ、業務などで活用してみてください。
コメント