OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Accessのデータ変換方法

  • すぐに回答を!
  • 質問No.110152
  • 閲覧数139
  • ありがとう数1
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 60% (39/64)

かな漢字、カタカナ、アルファベット、数字の含まれるデータフィールドがあります。
カタカナは全角のままで、アルファベットと数字を半角に変更する方法はありますでしょうか。

データの文字数、カナ→数字などの順は統一性がありません。また、スペースも含まれていますがスペースも削除した状態が望ましいです。

ご存知の方がいましたら教えてください。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

ユーザー定義関数です。
文字を半角にしてみて数字、アルファベット(大文字または小文字)なら、その半角で置き換えています。文字毎にコーディングは不要と思いますが・・・・

Public Function AZaz09_Henkan(moji)
  Dim elm As String '1文字
  Dim elm_komoji As String '半角に変換
  Dim pot As Integer '文字位置

  moji = Trim(moji) '空白除去
  For pot = 1 To Len(moji)
    elm = Mid(moji, pot, 1) '1文字
    elm_komoji = StrConv(elm, vbNarrow) '半角文字にする
    Select Case Asc(elm_komoji)
      Case 48 To 57, 65 To 90, 97 To 122 '0~9,A~Z,a~z
        Mid(moji, pot, 1) = elm_komoji
    End Select
  Next
  AZaz09_Henkan = moji
End Function
お礼コメント
glimlach

お礼率 60% (39/64)

ありがとうございます。

Function moji(MyStr As String)
Mylength = Len(MyStr)
For i = 1 To Mylength
Mystr_i = Mid(MyStr, i, 1)
If Mystr_i Like "[A-Z]" Or Mystr_i Like "[0-9]" Then
Mystr_tmp = StrConv(Mystr_i, vbNarrow)
Else
Mystr_tmp = Mystr_i
End If
moji = moji & Mystr_tmp
Next i
End Function

の方法をとることになりましたが、ぜひ試してみます。
投稿日時 - 2001-07-30 09:40:08
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル11

ベストアンサー率 38% (114/297)

かな漢字はどうするんでしょう? Accessには文字列操作機能はないはずなので、VBAで自分で作るしかありません。 モジュールでAをAに変換するってのをアルファベット・数字ともに1個ずつかいていくしかないのでは? ...続きを読む
かな漢字はどうするんでしょう?

Accessには文字列操作機能はないはずなので、VBAで自分で作るしかありません。
モジュールでAをAに変換するってのをアルファベット・数字ともに1個ずつかいていくしかないのでは?
補足コメント
glimlach

お礼率 60% (39/64)

かな漢字はそのままです。

VBAでStrConv関数を利用するのではないか、というところまでの予想はできているのですが。
投稿日時 - 2001-07-27 14:56:00

  • 回答No.2
レベル11

ベストアンサー率 38% (114/297)

再び。 StrConv関数だと、お望みのようなことは難しいのでは? 複数条件が絡んでいるようですし...。 私もあまり詳しくないですが、私のやっている方法。 ***スペースを削除*** Public Function DelSpaces(st As String) As String Dim i As Long, lg As Long Dim bst As Strin ...続きを読む
再び。
StrConv関数だと、お望みのようなことは難しいのでは?
複数条件が絡んでいるようですし...。
私もあまり詳しくないですが、私のやっている方法。

***スペースを削除***
Public Function DelSpaces(st As String) As String

Dim i As Long, lg As Long
Dim bst As String, c As String

st = Trim(st)
lg = Len(st)
For i = 1 To lg
c = Mid(st, i, 1)
If c = " " Or c = " " Then
Else
bst = bst + c
End If
Next i
DelSpaces = bst

End Function

***英数字の変換***
Public Function ZenToHan_Num(st As String) As String

Dim i As Long, lg As Long
Dim bst As String, c As String
Dim c1 As String
Dim c2 As String

st = Trim(st)
lg = Len(st)
For i = 1 To lg
c = Mid(st, i, 1)
c1 = "0": c2 = "0"
If c = c1 Or c = c2 Then
c = c1
Else
c1 = "1": c2 = "1"
If c = c1 Or c = c2 Then
c = c1
英数字…最後まで続く
End If
bst = bst + c
Next i
ZenToHan_Num = bst

End Function

これをクエリの式で呼び出し、変換しています。
参考になれば。
  • 回答No.3
レベル14

ベストアンサー率 33% (1403/4213)

OracleにはREPLACEなる関数があり、 文字の置き換えができてたか、とおもいます。 ACCESSではどうでしょう? A~Z、a~z、0~9なら52回もUPDATE文実行かな? (Upper,Lower使用しても36回、とても大変)
OracleにはREPLACEなる関数があり、
文字の置き換えができてたか、とおもいます。

ACCESSではどうでしょう?
A~Z、a~z、0~9なら52回もUPDATE文実行かな?
(Upper,Lower使用しても36回、とても大変)
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ