個人事業主の方必見!確定申告のお悩み解決

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:都文京
というように値が返されるようにしたいのですが、
どのように実現したらよいでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (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))

というような感じでどうでしょう。
文字列にスペースがあるとうまくいかないかも。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
ご回答頂いた数式で、目的を達することができました。
目から鱗の内容でした。

一つだけ気になったのですが、
>#6バイトか7バイトずつだったら[データ]-[区切り位置]が使えたのでしょうけど。
とはどういう意味でしょうか?

お礼日時:2009/10/26 23:57

>>#6バイトか7バイトずつだったら[データ]-[区切り位置]が使えたのでしょうけど。


>とはどういう意味でしょうか?

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

...という意味でした。
    • good
    • 0

こんにちは。



的外れの内容でしたらすみません。

この場合は、「バイト数」ではなく、単純に「文字数」で分割した方が簡単だと
思います。
文字列を文字数で切り出すには、
  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関数を
 利用したものに替えています。

以上です。参考になれば幸いです。
「EXCEL 文字列分割について」の回答画像2
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/26 23:52

一発では無理です。


アイデアはあります。
ヒントを記載します。

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

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

お礼日時:2009/10/26 23:46

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング