現担当欄に入力された「、」区切りの文字列を分解する方法
例)XX氏、YY氏、M氏
<クエリ>
一人目: leftstr([現担当者],"、")
二人目: secondperson([現担当者],"、")
三人目: thirdperson([現担当者],"、")
四人目: fourth([現担当者],"、")
Option Compare Database Option Explicit '半角カタカナ「、」を全角「、」に置換 Function replacestr(strmoji) Dim provisionalstr As String Dim before_replacement() As Variant 'Dim after_replacement As Variant Dim i As Integer If IsNull(strmoji) = False Or Len(strmoji) > 0 Then before_replacement = Array("!", "!", "_", "_", "F", "W", "w", "P", "P", "L", "L", "/", "/",";",":",":", 0, 1, 2, 3, 4, 5, 6, 7, 8, 9) provisionalstr = Replace(strmoji, "、", "、") For i = 0 To UBound(before_replacement) provisionalstr = Replace(provisionalstr, before_replacement(i), "") Next replacestr = provisionalstr End If End Function '-------------------------------------- '区切り文字までの文字列を取りだす(1番目) '-------------------------------------- Function leftstr(strmoji, 区切り文字) Dim provisionalnumber As Integer If IsNull(strmoji) = True Then leftstr = "" Else If InStr(1, strmoji, 区切り文字) > 1 Then provisionalnumber = InStr(1, strmoji, 区切り文字) leftstr = replacestr(Left(strmoji, provisionalnumber - 1)) Else leftstr = replacestr(strmoji) End If End If End Function '-------------------------------------- '区切り文字文字から右の文字列を取りだす '-------------------------------------- Function rightstr(strmoji, 区切り文字) Dim provisionalnumber As Integer Dim provisionallen As Integer If If IsNull(strmoji) = True Then rightstr = "" Else If InStr(1, strmoji, 区切り文字) > 1 Then provisionalnumber = InStr(1, strmoji, 区切り文字) provisionallen = Len(strmoji) '一番後ろに区切り文字がある場合 If provisionallen = provisionalnumber + 1 Then rightstr = "" Else rightstr = Mid(strmoji, provisionalnumber + 1, provisionallen) End If End If End If End Function '-------------------------------------- '2番目を取りだす '-------------------------------------- Function secondperson(strmoji, 区切り文字) Dim provisionalstr1 As String provisionalstr1 = rightstr(strmoji, 区切り文字) '2番目が空なら1番目と同じ値を入力(if文不要なら削除) If leftstr(provisionalstr1, 区切り文字) = "" Then secondperson = leftstr(strmoji, 区切り文字) Else '2人目を出力 secondperson = leftstr(provisionalstr1, 区切り文字) End If End Function '-------------------------------------- '3番目を取りだす '-------------------------------------- Function thirdperson(strmoji, 区切り文字) Dim provisionalstr1 As String Dim provisionalstr2 As String provisionalstr1 = rightstr(strmoji, 区切り文字) provisionalstr2 = rightstr(provisionalstr1, 区切り文字) thirdperson = leftstr(provisionalstr2, 区切り文字) End Function '-------------------------------------- '4番目を取りだす '-------------------------------------- Function fourth(strmoji, 区切り文字) Dim provisionalstr1 As String Dim provisionalstr2 As String Dim provisionalstr3 As String provisionalstr1 = rightstr(strmoji, 区切り文字) provisionalstr2 = rightstr(provisionalstr1, 区切り文字) provisionalstr3 = rightstr(provisionalstr2, 区切り文字) fourth = leftstr(provisionalstr3, 区切り文字) End Function