- ベストアンサー
EXCEL文字列分割方法と注意点
- EXCEL2003を使用している場合、文字列を指定のバイト数ずつ別のセルに分割する方法は、LEFTB関数とMIDB関数を使用します。しかし、全角と半角が混在している場合、元の文字列が正しく分割されない可能性があります。
- たとえば、分割対象の文字列に「都」の文字が含まれる場合、LEFTB関数とMIDB関数を使用すると、その文字が消えてしまうことがあります。これを防ぐためには、元の文字列に含まれる全角文字のバイト数を正確に計算し、適切な切り出しポイントを設定する必要があります。
- 具体的な解決策としては、文字列を1文字ずつチェックし、全角文字の場合は2バイト、半角文字の場合は1バイトとしてバイト数を計算し、切り出しポイントを適切に設定する方法があります。また、分割結果を別のセルに表示する際には、セルの書式設定が自動で変更されるため、注意が必要です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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)) : というような感じでどうでしょう。 文字列にスペースがあるとうまくいかないかも。
その他の回答 (3)
- end-u
- ベストアンサー率79% (496/625)
>>#6バイトか7バイトずつだったら[データ]-[区切り位置]が使えたのでしょうけど。 >とはどういう意味でしょうか? 関数ではない方法で。 1)A列をB列にコピーする。 2)B列選択。 3)[データ]-[区切り位置] 4)ウィザード-1/3 「スペースによって右または左に揃えられた固定長フィールドのデータ」 5)ウィザード-2/3 フィールドの幅を指定。(プレビューボックスをクリック。6..12..18..など) 6)「完了」(必要であればウィザード-2/3でデータ形式を指定) ...という意味でした。
こんにちは。 的外れの内容でしたらすみません。 この場合は、「バイト数」ではなく、単純に「文字数」で分割した方が簡単だと 思います。 文字列を文字数で切り出すには、 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関数を 利用したものに替えています。 以上です。参考になれば幸いです。
お礼
回答ありがとうございます。 すみません、質問の内容が言葉足らずでしたが、 分割した際には6バイト以内で、できるだけ多くの文字を設定したく、 仮に半角文字が続く場合には半角3文字ではなく、半角6文字が分割されるような形にしたいと思っています。
- SAKENOSAKA
- ベストアンサー率32% (78/240)
一発では無理です。 アイデアはあります。 ヒントを記載します。 (区切りとなる文字が限定される場合を想定しての回答ですが) ("都"道"府"県"と。) mid関数を使います。 find関数を使います。引数は一部省略します。 =mid( A1 ,find("都") ,100) を都道府県分の列を用意して、結果がエラーじゃない ものを出力したい結果列に反映するようにする。 最後は値貼り付けする。おわり。
お礼
回答ありがとうございます。 質問の書き方から誤解させてしまったかもしれませんが、 実際には区切りとなる文字は無いような項目ですので、 区切り文字を指定して分割する方法は使えない状況です。
お礼
回答ありがとうございました。 ご回答頂いた数式で、目的を達することができました。 目から鱗の内容でした。 一つだけ気になったのですが、 >#6バイトか7バイトずつだったら[データ]-[区切り位置]が使えたのでしょうけど。 とはどういう意味でしょうか?