Excel 文字列の分割(u_split)
文字列を区切り文字で分割する場合、VBAならsplit関数があるので良いが、
セル上で使用できる関数が見当たらない。
で、以前作ったものがあったのでメモしておきます。
こんな感じで、区切り文字と何番目の項目を取得するか指定して利用します。
以下のソースを標準モジュールとして登録して利用します。
文字列の分割以外でも汎用的に使えそうな関数をちょっぴり載せておきます
'================================================================================ '区切り文字列から指定の項目番号の文字列を求める 2013/11/05 t.ohishi 'str1:区切り文字を含む文字列, str2:区切り文字, str3:項目数 '================================================================================ Function u_split(str1 As String, str2 As String, str3 As Long) Dim x x = Split(str1, str2) u_split = "" If (str3 > 0) And (str3 <= UBound(x) + 1) Then u_split = x(str3 - 1) End If End Function '================================================================================ '区切り文字列の先頭から指定の項目数までの文字列を求める 2013/11/05 t.ohishi 'str1:区切り文字を含む文字列, str2:区切り文字, str3:項目数 '================================================================================ Function u_split2(str1 As String, str2 As String, str3 As Long) Dim x If Right(str1, 1) = str2 Then str1 = Left(str1, Len(str1) - 1) End If x = Split(str1, str2) u_split2 = "" If str3 > 0 Then For i = 0 To str3 - 1 If i <= UBound(x) Then u_split2 = u_split2 & x(i) & str2 End If Next If Right(u_split2, 1) = str2 Then u_split2 = Left(u_split2, Len(u_split2) - 1) End If End If End Function '================================================================================ '上位10セルから最初に見つかった空白以外の文字を求める 2013/11/05 t.ohishi 'str1:上位の最初のセルを指定する '================================================================================ Function u_up10(R1 As Range) Dim x For i = 0 To 9 x = R1.Offset(i * -1, 0).Value If (x <> "") Or (R1.Offset(i * -1, 0).Row = 1) Then Exit For End If x = "" Next u_up10 = x End Function '================================================================================ '下位10セルから最初に見つかった空白以外の文字を求める 'str1:下位の最初のセルを指定する '================================================================================ Function u_dw10(R1 As Range) Dim x For i = 0 To 9 x = R1.Offset(i, 0).Value If (x <> "") Or (R1.Offset(i, 0).Row = 65536) Then Exit For End If Next u_dw10 = x End Function '================================================================================ 'データ件数カウント(100行の空白で終了とする) 'R1:データセルの先頭を指定する '================================================================================ Function u_count(R1 As Range) Dim cnt_space As Long, i As Long, j As Long cnt_space = 0 i = 0 Do Until cnt_space >= 100 If R1.Offset(i, 0).Value <> "" Then cnt_space = 0 Else cnt_space = cnt_space + 1 End If i = i + 1 Loop u_count = i - cnt_space End Function