| 文字と数字の混在テキストを分割 |
| ある製品番号が型番や製作年月などを混在させて「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 |
| あとは下記のクエリーのように呼び出すだけです。テーブル作成クエリーにしてテーブルを作成し不必要な部分を削除してください。 |
![]() |
![]() |