• ベストアンサー

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

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文字

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

B1=TRIM(LEFTB(A1,3)) C1=IF(LEN(B1)<LEN(A1),TRIM(LEFTB(MID(A1,LEN(B1)+1,LEN(A1)),4)),"") D1=IF(LEN(B1&C1)<LEN(A1),TRIM(LEFTB(MID(A1,LEN(B1&C1)+1,LEN(A1)),4)),"") E1=IF(LEN(B1&C1&D1)<LEN(A1),TRIM(LEFTB(MID(A1,LEN(B1&C1&D1)+1,LEN(A1)),2),"")

その他の回答 (1)

回答No.1

質問番号4115266で回答を貰い、試してみると言ったはずです。だっ たら、それを試してみてどこがウマくいかなかったのか位は書いて ください。質問番号4115266でのmu2011さんの回答は今回のパターン にも応用の効く完璧な答ですよ。 質問番号4115266のC列は「A列からB列を除いたもの」でした。今回 はそれが「A列からB列を除いたものの先頭4バイト」になったので、 質問番号4115266のB列の回答「A列の先頭3バイト」と組み合わせれ ばいいんです。 それができれば、D列は「A列からB列とC列を除いたものの先頭4バイ ト」であることに気づくはずです。E列も同様です。 mu2011さんのエレガントな回答に敬意を表し、あえて応用の数式は 記載しません。がんばって読み解いてください。

関連するQ&A

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

    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文字

  • CString型 全角半角を意識せずに「1文字」ずつ取り出す

    CString型の文字列に格納されている文字を1文字ずつ取り出したいです。 ただし半角なら1バイト単位で、全角なら2バイト単位で、という風に分離したいです。 半角だけなら、str[0] str[1]...という風に取り出せますが、 全角が混じっていると、1バイト目、2バイト目と分離されてしまいます。 その文字が半角か全角かを判断して、半角なら1バイト、全角なら2バイト同時に取り出すロジックを、下記のような感じの関数として作りたいです。 CString ripString(CString str,int index){ //ソースとなる文字列、n文字目 /*~処理~*/ return 文字列; } たとえば"あaいbうcえdおe"という文字列を入れると、 CString str="あaいbうcえdおe"; ripString(str,0) →結果 "あ" ripString(str,1) →結果 "a" ripString(str,2) →結果 "い" ripString(str,3) →結果 "b"  ・  ・  ・   こういうことをするのに良い方法はありますか? 1バイトごとのそれぞれの文字自身が、 ・半角文字なのか ・全角文字の前1バイトなのか ・全角文字の後1バイトなのか これをプログラム的に判別する方法があればいいのですが・・・悩んでいます。

  • EXCELで、文字列を任意の文字数毎に分割するには

    ≪やりたい内容と条件≫ ◆EXCELで、文字列を任意の文字数毎に分割したいです。 ◆文字列は、全角・半角・記号を含みます。 ◆1つのセルが半角80桁という制限があり、その上限を超えると、右の次のセルに流し込まれるようにしたいです。(A1は元の文字列1500桁くらい、以降B1,C1,D1,E1・・・という具合に流し込み) ≪試した内容≫ MIDB関数を見つけ挑戦しましたが、1つ目のセルはうまくいきますが、その後が出来ません。例えば、文字列が「・・・・・・abcあいうえお」となっていた場合、B1は「・・・・・・abcあいう」、C1は「 お」(「お」の前は、半角スペース)となります。 何かよい方法はないでしょうか。 一度に出来ないようであれば、A1-B1で残りの文字列が表示できれば、それ以降はまた関数を入れて一つ一つやっていきたいと思っています。 よろしくお願いいたします。

  • セル内の文字をスペースによって分割するには?

    教えてください。 a1 に DX-09 1 SD-4 2 HPE-25 3 と、全角半角入り混じってスペースで区切られた文字が入っています。 これを、B1,C1,D1,E1,F1,G1にそれぞれDX-09,1,SD-4,2,HPE-25,3 と分割させたいです。 必ず半角スペースで区切られていますが、それぞれの文字の長さはマチマチです。 また、全角数字のも文字の長さは不定形です。 excel2010を使用しています。 お知恵を貸してください。

  • EXCEL 文字列分割について

    EXCEL2003を使用しています。 1つのセルに文字列が入力されており、 それを決まったバイト数ずつ別のセルに分割したいと考えています。 例)A1の文字列を6バイトずつ分割したい A1:東京都文京区 ↓ B1:東京都 C1:文京区 これを実現する為に B1に「=LEFTB(A1,6)」 C1に「=MIDB(A1,7,6)」という数式を入力しました。 A1の文字列が全角のみ(または半角のみ)なら 上記の数式で問題ないと思うのですが、 分割対象の文字列は全角と半角が混ざっており、 例えばA1の値が 「a東京都文京区」 というようなものだった場合、 B1:a東京 C1:文京 となり、元の文字列にある「都」の文字が消えてしまいます。 元の文字列が上記の様な場合には B1:a東京 C1:都文京 というように値が返されるようにしたいのですが、 どのように実現したらよいでしょうか?

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

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

    • ベストアンサー
    • Ruby
  • 【VBA】全角半角入り交じった住所を分割

    Book1のA列に記載されている市区町村番地を、別のファイルであるBook2のA列とB列に、それぞれ市区町村と番地に分けて転記するVBAを教えていただけますでしょうか。 住所は半角全角が入り交じっていますが、どちらかに統一するのではなく、記載されているとおりに転記したいです。 全角だけ、もしくは半角だけを抜き出すマクロは見つけたのですが、どちらであっても分割できるマクロがわかりません。 下記の住所を、、、 Book1 A列 港区赤坂1-2-3 港区赤坂1-2-3 港区赤坂1-2-3 下記のように分割して別ファイルに転記 Book2 A列    B列 港区赤坂  1-2-3 港区赤坂  1-2-3 港区赤坂  1-2-3 お知恵をお貸し下さい。 よろしくお願いいたします。

  • エクセル2003で、1つのセルに全角文字、半角文字

    エクセルで文字数制限のあるセルに 全角、半角文字が混在している場合 A1 上下ABCDひだりみぎ ←対象となるセル B1全角文字数 7 C1半角文字数 4 というように対象のセルの全角文字数、半角文字数を別々のセルに表示できる方法があれば おしえてください。

  • 半角全角文字が混ざった文字列の分割

    半角と全角があ混ざった文字列があります。 "202号室:あいうえおかきくけこさしすせそたちつてと" これを半分に切りたいのです。 "202号室:あいうえおかきく" "けこさしすせそたちつてと" ↑この場合、202が半角であること。半分としたときに、 最後の'く'という文字がかけてしまわないことが条件なのです。 どなたかわかる方お教えください。。。

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

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

    • ベストアンサー
    • PHP

専門家に質問してみよう