- ベストアンサー
EXCELで文字列を任意の文字数毎に分割する方法
- EXCELで文字列を任意の文字数毎に分割する方法について教えてください。文字列には全角・半角・記号が含まれており、1つのセルの制限を超える場合は次のセルに流し込まれるようにしたいです。
- MIDB関数を試してみましたが、1つ目のセルはうまくいくものの、後続のセルがうまく分割できませんでした。具体的には、「・・・・・・abcあいうえお」という文字列の場合、B1セルには「・・・・・・abcあいう」、C1セルには「 お」と表示されます。
- 何か他の方法で文字列を任意の文字数毎に分割することはできるでしょうか。一度に分割できない場合でも、A1セルとB1セルに文字列を表示することができれば、後続のセルに関数を入れて順番に分割することができます。お手数ですが、アドバイスをいただけると幸いです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
半角79文字目に全角文字があった場合、その全角文字は含めない(そのセルは半角79文字、次のセルはその全角文字から始まる) と、言うことでよろしいでしょうか。それでしたら、元の文字列にスペースが入っていないことが条件になりますがコレでできそうです。 B1に =TRIM(MIDB($A$1,SUM($A2:A2)+1,80)) B2に =LENB(B1) と、入れて右側にずーっとコピー。 なお、A2は空白にして置いてください。
その他の回答 (4)
- mt2008
- ベストアンサー率52% (885/1701)
No.3です。 ちょっとイメージがわきません。 制約を80桁×20行ではなくもっと小さな値にして具体的な例を挙げていただけませんか。
お礼
うまく表現できずに申し訳ありません。。。 <データ量が多い場合> ------------------------ 01行目・ああああああああああああああああああああ 02行目・いい ・ううううううう 03行目・ええええええええええ ・おおお 04行目・かかかかかかかかかかかかかかかかかか 05行目・きききききききききききききききききき ・ ・ ・ 20行目・んんんんん ------------------------ 20行に収まるように、短い部分は同じ行に <データ量が少ない場合> ------------------------ 01行目・ああああああああああああああああああああ 02行目・いい 03行目・ううううううう 04行目・ええええええええええ 05行目・おおお 06行目・かかかかかかかかかかかかかかかかかか ・ ・ ・ 12行目・わわわわわ ------------------------ ・で全て改行 このようなイメージでした。。。 できないと思ったので、いまは地道にやっています。 データ量の多いものは少なそうなので、前回教えていただいたので出来上がりそうです。 ご連絡ありがとうございました!
- mt2008
- ベストアンサー率52% (885/1701)
No.3です。 元の文字列にスペースが含まれているのでしたら、まず元の文字列のスペースを何か他では使用していない文字に置換しておいて、分割後にスペースに置換しなおす方法が一般的だと思います(全角スペースは全角の文字、半角スペースは半角の文字に…) なぜ、スペースが入っていると困るかといいますと、MIDBで例えば「あいう」と言う文字列から先頭5文字を切り出すと「あい」+半角スペースで5文字として切り出されます。この余分な半角スペースと、元から入っているスペースの区別が出来ないからです。
お礼
大変参考になりました! もう一つお伺いできれば幸いなのですが、 1500桁の文字列は、「・あい・かきくけこ・サシsuseそ」というようになっています。 「・」で次のセルに流し込みたいのですが、80桁×20行という制約があるため、元の文字列が短いものは次のセルに移し、文字列が長く、「・」で改行すると20行に収まりきらないものは、「・」で改行せず(?)に続けて流し込むという事は出来るものなのでしょうか。 レイアウトも整えなければならず、これは手作業になりそうでしょうか。 「・」での分割は、「データ」→「区切り位置」で出来ました。 どうぞよろしくお願いいたします。
- magician_1
- ベストアンサー率26% (27/101)
こんなのでいかがでしょうか。 =MIDB($A$1,(CELL("col",b1)-2)*80+1,80)
お礼
ありがとうございます! 試してみましたが、やはり一文字分が抜けてしまいます。。。 ですが、一つのセルを固定してコピーする方法がわかりました。 どうもありがとうございました!
エクセルは一度も操作したことがない門外漢ですので・・・。 あくまでも参考程度に・・・。 B1=LEFTB(A1,12) C1=LEFTB(SUBSTITUTE(A1,B1,""),12) D1=LEFTB(SUBSTITUTE(A1,B1 & C1,""),12) こんな感じでコピー部を消して常に左から12文字を抽出。
お礼
ありがとうございます! ひとつ目のセルはうまくいきましたが、C1から後のデータがうまく抽出されません。。。 教えていただいたのに私の理解度が低く、申し訳ありません。。。
お礼
ご回答、どうもありがとうございます! 上記の方法で試しましたら、データが抜けることなく正確に分割することが出来ました! 実は1500桁の文字列が20000件ほどあるのですが、一部にスペース(半角・全角)が入っています。 まだそのデータを見つけることが出来ないのですが、「元の文字列にスペースが入っていないことが条件・・・」とありましたがどうしたらよろしいのでしょうか。 おそらくスペースの入っているものは少ないと思いますので、地道に探していこうとは思っていますが。 ですが、分割できただけで十分です! どうもありがとうございました!!