• ベストアンサー

全角、半角のデータの抽出方法

あるシステムからデータを受け取る際に氏名の領域が16バイト取ってあるのですがこの領域だけ抽出しようとしたらうまくいきません。 漢字が4バイトでスペースが2バイトの為MID関数を使うと名前の字数で抽出される領域が16バイトとることが出来ないのでうまく16バイト取る方法ご存知の方お教えください。お願いします。

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

固定長文字列の作成関数を載せました。 「fixStr」関数と命名しております。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=172521
7_7_7
質問者

お礼

ありがとうございました。 問題解決できました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

MID関数のほかにMIDB関数がありますが、これを使ってもダメですか。

7_7_7
質問者

お礼

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

7_7_7
質問者

補足

MIDB関数も試しましたがだめでした。

全文を見る
すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

文字数を取得するには Len(StrConv(文字列, vbFromUnicode)) とします。 これを利用してみてください。

7_7_7
質問者

お礼

文字列のある部分なのでlen関数以前の問題です。 わかりにくい質問でも申し訳ございませんでした。 回答に感謝いたします。 ありがとうございました。

7_7_7
質問者

補足

MIDB関数も試しましたがだめでした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access Left$関数で全角半角が混在したデータの抽出 バイト数がずれる

    AccessクエリーでのLeft$関数について教えてください。 半角英数字と漢字文字列が混在したフィールドから Left$関数で17バイト抽出したいのですが、 漢字を一文字=1バイトで換算した結果がかえってしまいます。 例) 1001-500本aaa-GG-りんご ⇒ 1001-500本aaa-GG-り 1002-500mLaaa-GG-みかん ⇒ 1002_500mLaa-GG ※[本]が漢字で[mL]は半角英数です。 後で抽出が自由にできるように、 [GG]以前の文字列のバイト数を固定にしていたのですが 全角・半角が混在していると抽出にずれがでてしまうことを知りませんでした。 ※[4バイト]+"-"+[8バイト]+"-"+[GG]+"-"としていました。 GGを含むGGより以前の文字列を抽出するにはどうすればよいでしょうか? (漢字1文字を2バイトと換算しながらLeft$で抽出するには?) よろしくおねがいいたします。

  • 半角/全角文字混在データの分割方法

    VB6.0にて、あるデータ項目の内容を、画面上の2つの表示領域に分割して セットする方法を教えて下さい。 あるファイルの項目として、「住所」という項目があるとします。 このデータを取得し、画面に表示する際に、「住所1」「住所2」とに分割して、 セットします。 この場合、ファイル上の「住所」は、キャラクタタイプで40バイトと定義されており、 ”半角/全角文字混在”でデータが格納されています。 画面上の、「住所1」「住所2」はそれぞれ、20バイトとします。 この様な条件で、単純に取得したデータを2分割すると、 取得したデータが、全て半角か全角なら問題はないのですが、 例えば、1文字目が半角で、以降が全て全角文字だった場合に、 最後の全角文字がぴったり収まらなくなり、うまく表示できないように思います。 また、文字を取得する際に、使用している、Mid(MidB)関数やLen(LenB)関数も、 うまく利用できていないようです。(コード体系の違いでしょうか?) どなたかご教授下さい。 よろしくお願いします。

  • 文字抽出

    エクセル初級者です。マクロは分かりません。 セルに ”漢字 半角スペース (ピンイン表記)” されています。 例)麻婆豆腐 (mápó dòufu) これから漢字とピンインを分けて抽出したい。 対象のセルの列には漢字は1~7文字で文字数に応じてピンインも変化します。 FIND,MID,LEFTなどの関数を調べてみましたが、所望には至りませんでした。 何かアドバイスいただければ有難く。

  • データの抽出

    名簿形式のデータAがあります。 そのデータAの中から一部を取り出したデータBを作成しました。 質問は全データである「A」から「データB以外のデータ」であるCを 作成するにはどうすれば良いのでしょうか?エクセルの関数かアクセスを使って簡単に抽出できるのでしょうか。よろしくお願いします。 A   氏名  住所 など 1 石川  東京 2 佐藤  名古屋 3 山田  北海道 … 100   B   氏名  住所 2 佐藤  名古屋 5 本田  東京 10 … 78 C    氏名 住所 1 石川 東京 3 山田 北海道 4

  • 複数のエクセルからデータを抽出する方法

    複数のエクセルデータから下記条件に合うデータを抽出したいのですが、どの様にするのがよいのでしょうか? ◆最大4つのエクセルデータを使用 ◆4つのデータ項目は全て同じ ~欲しいデータ~ (1)4つ全てのデータに名前がある人 (2)データ1には名前があり、他3つのデータには名前がない人 (1)はアクセスで抽出してみたのですが、ダブって名前が出る人がいました。 原因はわかりません。 初心者でも簡単に抽出できる方法がありましたらお教え下さい。 エクセルで関数を使った方がよいのか、アクセスを使った方がよいのかわからないので、簡単な方でお教えいただけると助かります。 他にも同じ様な質問があったのかもしれませんが、探しきれなかったので新しく質問させていただきました。宜しくお願いいたします。

  • データの抽出する関数について

    データシートにデータが入っています。 A B   C D・・・・続く 1 鈴木 りんご 2 鈴木 みかん 3 渡辺 りんご 4 鈴木 りんご 5 山田 バナナ 6 渡辺 バナナ 続く 氏名シートのA2のセルに氏名を入れると、その氏名のデータを抽出するように式を考えていますがうまくいきません。 =IF(ISERROR(INDEX(データ!A1:$I$15,MATCH($A$2,データ!A1:$A$15,0),2))=FALSE,INDEX(データ!A1:$I$15,MATCH($A$2,データ!A5:$A$15,0),2),"") とA4に式を入れて、A2には鈴木と入れて試みると、鈴木は正常に全件抽出できても、渡辺や山田はMATCHのデータ範囲のせい?で正常に抽出できません。 どのような関数にすればいいかどなたかご教授ください!

  • Excel関数でデータを抽出する方法

    Excel初心者教室での課題で、以下のような問題を出されました。 次の表から、データが全てあるものだけを抽出し、sheet1からsheet2に移しなさい。 〈名前〉〈 E社〉〈 F社〉〈 G社〉 〈 A 〉〈 1 〉 〈 2 〉 〈 3 〉 〈 B 〉 〈 2 〉 〈 2 〉 〈 C 〉〈 3 〉〈 1 〉〈 5 〉 〈 D 〉 〈 1 〉 上の表からAとC(3社共にデータがある)ものだけを抽出したいのですが、回答条件が ●データ抽出にはオートフィルター機能は使用せず、関数で処理すること ●今まで習った知識で回答可能 とあり、まだ初心者クラスで、データ抽出に関係がありそうな関数はIF関数やVLOOKUPくらいしか思い当たらず、それらを使って抽出を試みたのですが「三社共にデータがあるものだけ抽出」という条件が処理出来ず、上手く出来ませんでした。 手詰まりで先に進めずに今、困っています。 そこで、Excelに詳しい方にアドバイス頂けたらと思い、書き込みしました。 宜しくお願いします。 文章力が低いので分かり辛い文面で、表も見辛くてすみません。

  • Excelの文字の取り出し

    Excelシートからの文字の取出し方法で悩んでいます。 1セルに氏名が入っていて、そちらから姓と名を別々に取り出したいと思っています。(姓と名の間には全角スペースが入っているデータです) MID関数やLIFT関数では、任意の文字数の指定が必要ですが、 氏名のため、姓名の長さが一定ではなく、指定することができません。 なにか良い方法はないでしょうか?(抽出方法はEXCELや関数に限りません) よろしくお願いします。

  • 文字列抽出の方法

    こんにちは。Excelの文字列抽出の方法で、 12345あいうえと 23434Abcfsafjkfafal 98438かきくここabcdfdsfsdfasfasfja などのデータがあります。最初の5文字は必ず数値になります。数値以降の文字列を取得したいのですが、何文字あるかは不明です。その最後までデータを取得したいと考えています。mid関数を使うと思ったのですが、5文字目以降の文字列のバイト数、文字数がわからないので使うことができません。どのように解決すればよいかご教授お願いいたします。

  • アクセス2000のVBAで変数に係数をつける方法

    アクセス2000を使っています。 一つのレコード内に、下記のように、「半角4文字の番号+スペース」という規則正しいデータがあります。  ↓↓ 11A11 10A11 22B11 09A22 しかし、このデータの数は不規則で、番号が1個のものもあれば、20個のものもあります。  ↓↓ 11A11 11A11 10A11 22B11 09A22 ・・・ このデータ内にある半角4文字の番号を全て別々のデータにしたいと思い、VBAのコードを使って、InStr関数でスペースを検索し、そのスペースの手前から4文字のデータをleft関数やMid関数で抽出し、それを変数data(x)に代入し、次に、InStr関数で前のスペースの位置から次のスペースを探して、また、そのスペースの手前から4文字のデータをMid関数で抽出し、それを変数data(x)に代入する。 要するに、data(x) の中の x を1から1づつ増加させていき、data(1),data(2),data(3)という変数を自動的に生成し、その生成された各変数にデータを代入していきたいのですが、どうすればいいのでしょうか?