プロが教える店舗&オフィスのセキュリティ対策術

エクセルの関数を使って
メールアドレスの@から左方向に . を探して
改行したいのですが、できますか?
たとえば
abc.defghijk@zzz.jp だったら
abc.
defghijk@zzz.jp
また、123.456.789@jpだったら
123.456.
789@jp
となるようにしたいのです。
また、@より左の文字数が10文字以上だと
上記のように . で改行。
そうでなければ、@で改行にしたいのですが
関数では難しいのでしょうか。
よろしくお願いします。

質問者からの補足コメント

  • ありがとうございます。
    なんとかやってみます。

      補足日時:2019/10/04 20:12
  • ありがとうごさいます。
    無事できました(*´︶`*)

      補足日時:2019/10/05 21:02

A 回答 (4件)

面倒ですけどできますよ。



”@”の位置を検索して、その位置より左を切り出す。
切り出した文字列から”.”をSUBSTITUTE関数を使って削除した文字列の文字数と
切り出しただけの文字列の文字数の差から”.”の数を求め、
元の文字列に対してSUBSTITUTE関数で、その求めた数にある”.”だけを指定して「改行コード」に置き換える。

こんだけです。
試しに作ってみてください。

試行錯誤するとよく分かると思います。
作業列をたくさん使うと良いでしょう。
1つのセル(列)だけで処理しようとすると、何をしているのか分からなくなりますからね。
上手くできたら、それを1つの数式にまとめれば良いのです。
ガンバレ。
    • good
    • 0

時間があったので、ちょっと作ってみた。


関数だけで出来るという例です。

まったく同じ作りにする必要はありませんが、
必要なら分からないところをアドバイスできます。
「エクセルで特定の文字から改行」の回答画像2
    • good
    • 0

こんばんは!



元デーはA列2行目以降にあるとし、B2セル以降に表示するとします。
無理やり一気にやってみました。
(セルの書式設定の「配置」タブで「折り返して全体を表示する」にチェックを入れておいてください)

大前提として、対象セルにかならずドット「.」とアットマーク「@」は存在する!とします。

=IF(FIND("@",A2)>10,LEFT(A2,FIND("#",SUBSTITUTE(LEFT(A2,FIND("@",A2)),".","#",LEN(LEFT(A2,FIND("@",A2)))-LEN(SUBSTITUTE(LEFT(A2,FIND("@",A2)),".","")))))&CHAR(10)&MID(A2,FIND("#",SUBSTITUTE(LEFT(A2,FIND("@",A2)),".","#",LEN(LEFT(A2,FIND("@",A2)))-LEN(SUBSTITUTE(LEFT(A2,FIND("@",A2)),".",""))))+1,LEN(A2)),LEFT(A2,FIND("@",A2))&CHAR(10)&MID(A2,FIND("@",A2)+1,LEN(A2)))

※ エラー処理はしていません。

※ 極端に式が長くなってしまいました。(数式の意味は割愛します)
複数列を作業用として使用した方が間違っていた場合、訂正が簡単だと思います。m(_ _)m
    • good
    • 1

あ。


ちなみに最終的に数式をまとめるとこんな感じになります。

 =SUBSTITUTE(A2,".","."&CHAR(10),LEN(LEFT(A2,FIND("@",A2)-1))-LEN(SUBSTITUTE(LEFT(A2,FIND("@",A2)-1),".","")))

No.3の回答者さん同様にエラー処理は行っていません。
「エクセルで特定の文字から改行」の回答画像4
    • good
    • 0

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