文字と数字の混在テキストを分割
ある製品番号が型番や製作年月などを混在させて「AB351HFD45C」のように作られていた場合、文字は文字で、数字は数字でそれぞれ分解してテーブルに持つことができないだろうか、という場面がよくあります。
ちょっと複雑なモジュールですが、下記のような標準モジュールを作成します。
'-------------------------------------------
Public Function moji(製品名)
Dim I As Integer, N As String
If IsNull(製品名) Then
moji = Null
Exit Function
End If
製品名 = Trim(製品名)
For I = 1 To Len(製品名)
N = Mid(製品名, I, 1)
If IsNumeric(N) = True Then Exit For
If N = " " Then Exit For
Next I
If I <= Len(製品名) Then
moji = Left(製品名, I - 1)
Else
moji = Null
End If
End Function
'-------------------------------------------
Public Function nokori1(製品名)
Dim I As Integer, N As String
If IsNull(製品名) Then
nokori1 = Null
Exit Function
End If
製品名 = Trim(製品名)
For I = 1 To Len(製品名)
N = Mid(製品名, I, 1)
If IsNumeric(N) = True Then Exit For
If N = " " Then Exit For
Next I
If I <= Len(製品名) Then
nokori1 = Trim(Mid(製品名, I))
Else
nokori1 = Null
End If
End Function
'-------------------------------------------
Public Function suuji(製品名)
Dim I As Integer, N As String
If IsNull(製品名) Then
suuji = Null
Exit Function
End If
製品名 = Trim(製品名)
For I = 1 To Len(製品名)
N = Mid(製品名, I, 1)
If IsNumeric(N) = False Then Exit For
If N = " " Then Exit For
Next I
If I <= Len(製品名) Then
suuji = Left(製品名, I - 1)
Else
suuji = Null
End If
End Function
'-------------------------------------------
Public Function nokori2(製品名)
Dim I As Integer, N As String
If IsNull(製品名) Then
nokori2 = Null
Exit Function
End If
製品名 = Trim(製品名)
For I = 1 To Len(製品名)
N = Mid(製品名, I, 1)
If IsNumeric(N) = False Then Exit For
If N = " " Then Exit For
Next I
If I <= Len(製品名) Then
nokori2 = Trim(Mid(製品名, I))
Else
nokori2 = Null
End If
End Function
あとは下記のクエリーのように呼び出すだけです。テーブル作成クエリーにしてテーブルを作成し不必要な部分を削除してください。