• ベストアンサー

全角文字だけ抜き出したい

例えばAccessのテーブルのあるフィールドに、次の様な全角文字と半角文字が混在している文字列があったとします。 ================ 南下a-125-00SP PPP感化S-12345 堂都下125+333 ================ ここから別にフィールドを設けて下記の様に全角文字部分のみ抜き出す方法は無いでしょうか? ================ 南下 感化 堂都下 ================ 式でもVBAでも結構です。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 文字コード0~255が半角なのでそれを利用します。 なお、エラートラップは自分で付けて下さい。 Private Function GetOnlyZenkaku(Str As String) As String   Dim i As Long   Dim Chr As String   Dim temp As String   temp = ""   For i = 1 To Len(Str)     Chr = Mid(Str, i ,1)     If Asc(Chr) < 0 Or Asc(Chr) > 255 Then       temp = temp & Chr     End If   Next i   GetOnlyZenkaku = temp End Function

souta_n
質問者

お礼

ありがとうございます。お二人の回答をいただきどちらも出来るんでポイントをどうしようと困ってしまいました。どちらかというと、このコーディングのほうが、私にはわかりやすかったです。

その他の回答 (1)

  • mantaro1
  • ベストアンサー率48% (19/39)
回答No.1

簡単にする方法が思いつかなかったので、とりあえず関数を作成してみました。 全角にして一文字づつキャラクターコードを比較しています。 Function sGetZenkaku(sMoji As String) As String Dim iLen As Integer, i As Integer Dim sIc As String iLen = Len(sMoji) For i = 1 To iLen sIc = Mid(sMoji, i, 1) If Asc(sIc) = Asc(StrConv(sIc, vbWide)) Then sGetZenkaku = sGetZenkaku & sIc End If Next i End Function

souta_n
質問者

お礼

なるほど、判りました。ありがとうございます。

関連するQ&A

  • Excel VBAで、特定半角文字のみ全角文字に変換したい。

    Excel VBA で、 A列に半角、全角が混在した文字列及び数字が入っています。 ファイル名に出来ない半角文字 \ / : * ? " < > | だけを全角文字にするには、 どのようなコードを書けば良いのか、宜しくお願いします。

  • Access2000のクエリで全角文字を半角にするには?

    もともとのデータが全角英数字になっているフィールドを半角に変換したいのですが、クエリー実行時に変換できますでしょうか? 文字列関数のASCかな?とも思い、やってみたのですが、うまくいかず、とりあえず元のテーブルのデータを編集を置換でもって半角にしました。 でも、出来ればテーブルのデータは変更したくないので、クエリーでやる方法はありませんでしょうか? あまり専門的なことは分かりません。VBAは使ったことがありませんのでよろしくお願いします。

  • Ruby1.9で文字列中の全角文字数を調べたい。

    Ruby1.9を使っております。 次のような全角、半角が混在した文字列があり、その文字列の中から、 全角の文字数、半角の文字数がそれぞれ何文字あるか調べる方法はありますでしょうか。 ■文字列例 "あいイウう" どうか良きアドバイスをお願いいたします。

    • ベストアンサー
    • Ruby
  • 全角半角あわせて3文字

    全角半角が混在している文字列の左から3文字を取得したい場合にいい方法はないでしょうか? mb_substr関数で第3パラメータはバイト数で指定するようです。 関数リファレンスでは「最大文字数」って表現になってます。 http://php.net/manual/ja/function.mb-substr.php 半角なら文字数=バイト数ですが、全角だと指定の半分の文字数になります。 最大だから間違ってはないですが、文字数じゃないよな‥‥っていつも思ってます。 いったん半角→全角にして、6バイト分を切り出すのはできます。 でも、英数字も全角半角混在してるので元の文字列を壊したくないのです。 mb_substrの第3パラメータを6から3まで、mb_strlenが3になるまで回すのもやってみました。 でも、なんかスマートじゃないんですよ‥‥。 なにかこう、スマートないい手はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 全角半角変換 C++/CLI

    C++/CLI(VC++2008) で (1)たとえば 東京bay を 東京bay にという風に全角半角混在の文字列のなかの半角文字を全角文字に変換するにはどうすればよろしいでしょうか (2)全角半角混在の文字列のなかの全角文字を半角文字に変換するにはどうすればよろしいでしょうか  

  • ACCESS97 : レコードが長いファイルのインポートについて

    ACCESS97で、文字列を文字数ではなくバイト数で扱うことは可能でしょうか。 1レコードが20,000ByteあるテキストファイルをACCESS97のテーブルに インポートしようとしています。 インポート先のテーブルのフィールドをすべて「メモ型」にしたのですが、 インポート定義を利用してインポートを行おうとすると、 「レコードが大きすぎます。」というエラーが発生します。 そこで、プログラムでファイルを1レコードずつ読み込みながらテーブルに インサートしていく方法を取ろうかと思います。 テキストファイルは半角と全角が混在しているのですが、困ったことに 全角のデータが入るべきところに半角が混ざっている可能性があります。 たとえば、全角10文字入るべき場所に半角の空白が20文字入っていると いうような状態です。 この状態で StrConv関数でUnicodeに変換してからMidB$関数で文字を抜き 出すと、フィールドがずれてきます。 1文字目から10文字分、ではなく1Byte目から10Byte、などというように文 字列を扱うことができれば、全角と半角がどのような位置で混在していても 関係なくプログラム上で扱うことができると思うのですが,方法がわかりません。 また、これ以外で長いレコードのファイルをインポートできる方法があれば 教えていただきたいと思います。 長くなってしまいましたが、ご回答をいただけますようよろしくお願いいたします。

  • IME-2000の文字登録、何故か全角・半角が...

    IME-2000を利用しているのですが、英数字が含まれている文字(単語)を登録すると、元々半角の文字を登録しても、何故か半角のみの文字だけでなく、全て全角、半角全角の混在したものが登録されて、いざ変換しようとしたら、変換語列の中に全てが表示され、本来出そうと思っている文字を選び出すのが大変な状態になっています。 もっと面倒なのは、英単語やe-mailアドレス(全て半角の英数字の場合)を登録したときなのですが、半角、全角のみならず、頭文字が大文字、小文字、または大文字・小文字の混在した物と8個も登録されている始末。 こういうのを直すとしたら、どうしたらいいでしょう?

  • クエリーで、全角混じりデータの抽出[access95]

    半角で入力すべきフィールドの中に全角文字が混在している時に、 この全角文字が混在しているデータを、クエリーで抽出する方法を 教えてください。 データ型はテキストで、フィールド長は50です。 また入力されているデータは、任意<50文字とないっています。

  • accessオブジェクトの名前、全角と半角どちらが

    これからアクセスでテーブルをいくつか作ろうと思うのですが オブジェクト名は全角と半角どちらがいい、などはありますか? vbaで操作するつもりです。 vbaで使いやすいのは全角と半角とではどちらでしょう? よろしくお願いします。

  • 全角半角混在の文字列から○文字まで取得する方法

    はじめまして! MySQLから取得した文字列をPHPで例えば10文字まで表示したいのですが、良いやり方ありますでしょうか? 文字列には全角半角が混在しているので substr関数だと、うまく取得できない場合があります。よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう