• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL 文字列分割について)

EXCEL文字列分割方法と注意点

このQ&Aのポイント
  • EXCEL2003を使用している場合、文字列を指定のバイト数ずつ別のセルに分割する方法は、LEFTB関数とMIDB関数を使用します。しかし、全角と半角が混在している場合、元の文字列が正しく分割されない可能性があります。
  • たとえば、分割対象の文字列に「都」の文字が含まれる場合、LEFTB関数とMIDB関数を使用すると、その文字が消えてしまうことがあります。これを防ぐためには、元の文字列に含まれる全角文字のバイト数を正確に計算し、適切な切り出しポイントを設定する必要があります。
  • 具体的な解決策としては、文字列を1文字ずつチェックし、全角文字の場合は2バイト、半角文字の場合は1バイトとしてバイト数を計算し、切り出しポイントを適切に設定する方法があります。また、分割結果を別のセルに表示する際には、セルの書式設定が自動で変更されるため、注意が必要です。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

5バイトか6バイトずつ区切りたいという事ですね。 #6バイトか7バイトずつだったら[データ]-[区切り位置]が使えたのでしょうけど。 前列までの区切り結果を見る必要があるので B1 =TRIM(MIDB(A1,1,6)) C1 =TRIM(MIDB(A1,LENB(B1)+1,6)) D1 =TRIM(MIDB(A1,LENB(B1&C1)+1,6)) E1 =TRIM(MIDB(A1,LENB(B1&C1&D1)+1,6)) : というような感じでどうでしょう。 文字列にスペースがあるとうまくいかないかも。

DT2009
質問者

お礼

回答ありがとうございました。 ご回答頂いた数式で、目的を達することができました。 目から鱗の内容でした。 一つだけ気になったのですが、 >#6バイトか7バイトずつだったら[データ]-[区切り位置]が使えたのでしょうけど。 とはどういう意味でしょうか?

その他の回答 (3)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

>>#6バイトか7バイトずつだったら[データ]-[区切り位置]が使えたのでしょうけど。 >とはどういう意味でしょうか? 関数ではない方法で。 1)A列をB列にコピーする。 2)B列選択。 3)[データ]-[区切り位置] 4)ウィザード-1/3 「スペースによって右または左に揃えられた固定長フィールドのデータ」 5)ウィザード-2/3 フィールドの幅を指定。(プレビューボックスをクリック。6..12..18..など) 6)「完了」(必要であればウィザード-2/3でデータ形式を指定) ...という意味でした。

noname#144013
noname#144013
回答No.2

こんにちは。 的外れの内容でしたらすみません。 この場合は、「バイト数」ではなく、単純に「文字数」で分割した方が簡単だと 思います。 文字列を文字数で切り出すには、   LEFTB関数、MIDB関数、RIGHTB関数 ←こちらはバイト数で切り出す ではなく、   LEFT関数、MID関数、RIGHT関数    ←こちらは文字数で切り出す を使用します。 下記は、今回のご質問を、「文字列を3文字ずつの区切りで切り出す」 と解釈した場合の設定例です。 <文字数による切り出し例> 各セルを、   A1 = "a東京都文京区"   B1 = LEFT($A1,3)   C1 = MID($A1,1+1*3,3)   D1 = MID($A1,1+2*3,3)   E1 = MID($A1,1+3*3,3) とした場合、   B1には、"a東京"   C1には、"都文京"   D1には、"区"   E1には、空白文字 ("") が表示されます。 参考までに、上記のような数式を設定したシートのキャプチャ画像を添付しま した。 ※画像の例では、数式はオートフィルでコピーできるように、COLUMN関数を  利用したものに替えています。 以上です。参考になれば幸いです。

DT2009
質問者

お礼

回答ありがとうございます。 すみません、質問の内容が言葉足らずでしたが、 分割した際には6バイト以内で、できるだけ多くの文字を設定したく、 仮に半角文字が続く場合には半角3文字ではなく、半角6文字が分割されるような形にしたいと思っています。

回答No.1

一発では無理です。 アイデアはあります。 ヒントを記載します。 (区切りとなる文字が限定される場合を想定しての回答ですが) ("都"道"府"県"と。) mid関数を使います。 find関数を使います。引数は一部省略します。 =mid( A1 ,find("都") ,100) を都道府県分の列を用意して、結果がエラーじゃない ものを出力したい結果列に反映するようにする。 最後は値貼り付けする。おわり。

DT2009
質問者

お礼

回答ありがとうございます。 質問の書き方から誤解させてしまったかもしれませんが、 実際には区切りとなる文字は無いような項目ですので、 区切り文字を指定して分割する方法は使えない状況です。