• ベストアンサー

半角 全角に分解したい(アクセスの神様)

[車両]というフィールドがあるのですが、 その中には 「群馬100い」 とか 「名古屋55え」とか 全角文字+半角数字+全角文字 の規則で、値が入っています。 文字と数字ともにバイト数は不定なのですが、これを 全角文字 半角文字 全角文字 の3種類に分割したいのですが アクセス上で可能でしょうか? たとえば 「群馬100い」  → 「群馬」 「100」 「い」 のように分解したいのです。  どなたか、アクセスの神様教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ナンバープレートのようですので、 >全角文字+半角数字+全角文字 は 数字以外の文字+数字+数字以外の文字 という規則とみなしてもOKでしょうか? 以下、その前提で処理したユーザー定義関数です。エラー処理などしていませんが。 Const NUMSTR As String = "0123456789" '地域名を取得 Function GetPlaceFromNumPlt(str As String) Dim i As Integer For i = 1 To Len(str) If 0 < InStr(NUMSTR, Mid(str, i, 1)) Then GetPlaceFromNumPlt = Left(str, i - 1) Exit Function End If Next End Function '数字を取得 Function GetNumFromNumPlt(str As String) Dim i As Integer, ipos As Integer For i = 2 To Len(str) If 0 < InStr(NUMSTR, Mid(str, i, 1)) Then ipos = i Exit For End If Next If ipos < 1 Then Exit Function For i = ipos + 1 To Len(str) If 0 = InStr(NUMSTR, Mid(str, i, 1)) Then GetNumFromNumPlt = Mid(str, ipos, i - ipos) Exit Function End If Next End Function '最後のひらがなを取得 Function GetHiraganaFromNumPlt(str As String) Dim i As Integer For i = Len(str) To 1 Step -1 If 0 < InStr(NUMSTR, Mid(str, i, 1)) Then GetHiraganaFromNumPlt = Right(str, Len(str) - i) Exit Function End If Next End Function 使い方は SELECT GetPlaceFromNumPlt(col1), GetNumFromNumPlt(col1), GetHiraganaFromNumPlt(col1) FROM テーブル1; みなたいな感じです。

ya44goo
質問者

お礼

す。凄いです。 ありがとうございました。

その他の回答 (1)

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.2

1.フォーム上にbunkatuフィールドを作成する。 2.フォームを開くときのイベントに以下をVBAをコピペする。 Private Sub Form_Open(Cancel As Integer) Set objRegExp = CreateObject("VBScript.RegExp") objRegExp.Pattern = "(^[^\d]+?)(\d+?)([^\d]+?)" Set objMatches = objRegExp.Execute(Me!車両) Set m = objMatches(0) Me!bunkatu = m.SubMatches(0) & " " & m.SubMatches(1) & " " & m.SubMatches(2) End Sub 3つのフィールドにそれぞれ分けたいのであれば、bunkatuフィールド(名前はご自由に)を増やして、  Me!bunkatu2 = m.SubMatches(1) という具合に適当に書き換えて下さい。

関連するQ&A

専門家に質問してみよう