• ベストアンサー

Access2002 フィールドの分割方法について教えてください

度々すみません。 あるテーブルに、「車のナンバー」が入っています。 作った当初、あまり後のことを考えなかったらしく、 「地域」「数字」「ひらがな」「ナンバー」がひとつのフィールドに入っています。 ex)和歌山300す1234 なにわ55た567 この度、ある事情で、このフィールドを「地域」「数字」「ひらがな」「ナンバー」の4つのカテゴリーに分割しなければならなくなりました。 よい解決策がありましたら教えていただきたく存じます。 「地域」は全て2バイト文字ですが、文字数は不規則です。 「数字」は全て半角数字です。 「ひらがな」は一文字の2バイト文字です。 「ナンバー」は半角数字ですが、3桁と4桁があります。 全角、半角、全角、半角、という順序なので、ここら辺にヒントがあるのかな、と思ってはいるのですが、なにせスキルが・・・。 みなさんのお知恵を貸してください!

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

処理性能をどこまで求めているのかわかりませんが、1文字づつ判別して分離する例です。 数字じゃない、数字、数字じゃない、数字、が繰り返し現れるとすると   Dim sRet(1 To 4) As String   Dim sTmp As String   Dim i As Integer, j As Integer   Dim ss As String   ss = "あいう123かきく4567"   For j = 1 To 4     sRet(j) = ""   Next   i = 0   For j = 1 To Len(ss)     sTmp = Mid(ss, j, 1)     If (sTmp Like "[0-9]") Then       If ((i Mod 2) <> 0) Then i = i + 1     Else       If ((i Mod 2) = 0) Then i = i + 1     End If     sRet(i) = sRet(i) & sTmp   Next '  For j = 1 To 4 '    Debug.Print sRet(j) '  Next Debug.Print の結果は以下 あいう 123 かきく 4567 ※ テーブルへの設定の仕方は、方法含め自由です

camo-tech
質問者

お礼

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

その他の回答 (1)

noname#182251
noname#182251
回答No.1

正規表現/置換/文字列切り分け などを使用すればできるでしょう。 参考 http://www.f3.dion.ne.jp/~element/msaccess/AcResSnippetRegExp.html VBAは嫌いなので、具体的コードまでは踏み込む気になれません(^^;

camo-tech
質問者

お礼

いつもお世話になっております。 参考ページを元に、勉強してみます。 ありがとうございました。

関連するQ&A

  • Accessのフィールドサイズ

    Access2000を使用していますが、テーブル作成時に 「テキスト型」でフィールドサイズを「10」に設定して データを入力すると、半角でも全角でも「10桁」までの入力に なりますが、フィールドサイズは半角も全角も関係ないのでしょうか? 「テキスト型」の最大フィールドサイズは「半角255文字」と 思っていたのですが、全角でも255文字入力できました。

  • アクセスの入力方法の変更

    アクセス超初心者です。 アクセスで入力していく際に、全てのフィールドで全角平仮名になっています。 英数字の入力が多いので、その都度半角キーを押しています。 フィールド毎に半角、全角の設定はできませんか? エクセルだったら入力規則で設定できたと思うのですが・・。 お願いします。

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

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

  • accessでテキスト型のフィールドサイズについて…

    accessで作った受注管理のデータを抜き出してクロネコヤマトのi-cats(b2)に入力するように作りました。 b2のデータ交換規約(?)の方のテキスト型のフィールドサイズの指定が 半角英数字10文字 となっていたり、 15文字/30文字 全角/半角 というようになっています。 質問なんですが このフィールドサイズにぴったり合うようにフィールドサイズの設定をするにはどうしたらいいでしょうか? また、半角英数字・半角カタカナ・数字等、特定の文字の種類だけ入力できるようにたりしたいです。 もうひとつ別の質問です VBAで、設定したフィールドサイズよりも大きいテキストを入れようとするとエラーが出るんですが、VBAで後ろを切り捨てたりして入るサイズに縮める方法を教えてください。 長くなりましたが宜しくお願いします。

  • アクセスで複数フィールドを結合して1フィールドを作る際

    こんにちは。 OSはWIN2KでAccess2000を使用しております。 「T_データ」テーブルには、 社員コード(数値型)、社員名(テキスト型)、 給料(数値型)、住所(テキスト型)フィールドがあります。 この4つのフィールドを以下の条件を満たしつつ 「T_結合」テーブルの「結合データ」フィールドという 一つのフィールド(テキスト型)に追加したいのです。 ------------------------------------------------ 1.社員コードは 5桁、社員名は半角30桁、 給料は10桁、住所は全角20桁。 2.社員コード、給料は右詰とし残りは0で、 社員名、住所は左詰とし、残りは空白("")で埋める。 ------------------------------------------------- 最終的に「T_結合」テーブルを1レコード85バイトの レコードとしてエクスポートするのが目標です。 アクセスはUnicodeで管理されているというので単純には いかなそうなので、どなたかご教授願います。

  • Microsoft Accessのテーブルのテキスト型のフィールドサイズについて

    Microsoft Accessのテーブルを作成する際の、 テキスト型のフィールドサイズですが、全角で考えればいいのか、半角で考えればいいのかが、はっきり分かりません。 Ver.2002では、例えば5バイトの設定で、全角5文字が入力できてしまいます。どのように設計されているか、確かな情報が分からないので、ご存知の方、教えてください。 バージョンによっても、異なるのでしょうか。その辺りも教えてください。 よろしくお願いします。

  • Access フィールド内の値で、右端から5桁目の値だけを抽出する方法について

    Accessのフィールド内にある半角英数字(10桁~20桁)の右端から5桁目(または左端から5桁目)だけを抽出する方法を教えて下さい。 以下のように 各フィールド内に値が入力されています。 入力されている桁数は10桁以上20桁未満です。(全て半角) ◆元データ(レコードが10万件以上ある)  フィールド1    フィールド2     フィールド3 (1) 12345678910    11aa22bb33cc44dd55  1010101010101010 (2) 9876540000     aaaaaabbbbbb1111    11111111111111 ◆右端から5桁目だけを抽出する  フィールド1    フィールド2     フィールド3 (1)  7          4          0 (2)  4           1           b よろしくお願い致します。

  • 全角半角を意識した文字分割

    A列           B列   C列  D列  E列     あいうえおかきくけこ  あ   いう  えお  か アイウエオカキクケコ    アイウ   エオ  カキ ク あイウえオかきくけこ    あ   イウえ  オか き 先ほど同じような質問を一度しているのですが、 A列に全角半角混在のテキスト項目があります。 B列、C列、D列、E列に以下のルールで分割したいのですが、 Excel関数で 実現可能でしょうか? 可能な場合は式をご教授して頂けますでしょうか。宜しくお願い致します。 ※全角をバイト数指定で分割して文字化けしないように全角半角を考慮して分割した いと考えております。 B列(半角3文字)  A列3桁目が半角の場合は半角3文字 A列3桁目全角の場合は半角2文字(全角1文字) C列 (半角4文字) A列4桁目が半角の場合は、左端4桁目~半4文字分 A列4桁目が全角の場合は、左端3桁目~半角4文字 D列(半角4文字) A列7桁目が半角の場合は、左端7桁目~半4文字分 A列7桁目が全角の場合は、左端6桁目~半角4文字 E列(半角2文字) A列11桁目が半角の場合は、左端11桁目~半2文字分 A列11桁目が全角の場合は、左端10桁目~半角2文字

  • 全角半角考慮した文字列分割

    A列           B列         C列 あいうえおかきくけこ  あいうえ      おかきくけこ アイウエオカキクケコ   アイウエオカキクケ  コ あいうえオかきくけこ   あいうえオ    かきくけこ A列に全角半角混在のテキスト項目があります。 B列、C列に以下のルールで分割したいのですが、Excel関数で 実現可能でしょうか?可能な場合は式をご教授して 頂けますでしょうか。宜しくお願い致します。 ※全角をバイト数指定で分割して文字化けしないように 全角半角を考慮して分割したいと考えております。 B列  A列9桁目が半角の場合は半角9文字 A列9桁目全角の場合は半角8文字(全角4文字)をB列へ C列  A列10桁目が半角の場合は、左端10桁目~半角9文字 A列10桁目が全角の場合は、左端9桁目~半角9文字

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

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