プロが教えるわが家の防犯対策術!

A1セルに 120@12345@AA となっている場合、@の間の12345をB1に取り出す方法を教えていただきたいです。また、1@12-1345@k@12345などの場合 やはり@の間の12-1345を抜きだしたいです。
色々調べたのですが、@の前後の文字数が一定でないのと、@が複数含まれている場合と色々混在している為、私の力では不可能でした。どなたか良い方法を教えて下さい。

120@12345@AA   →   12345
1@12-1345@k@12345→   12-1345
2@1234@A@2222  →   1234

上記の様に取り出したいです。よろしくお願いいたします

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

  • 関数で難しい場合はVBAでもかまいません。ご教授お願いいたします。

      補足日時:2015/11/27 02:13

A 回答 (4件)

@は全角ですね。


区切り位置機能が最も簡単です。
「データ」ー「区切り位置」で「カンマやタブなど…」を選択して「次へ」→「区切り文字」を「その他」ー「@」を指定して「次へ」→「表示先」を適当なセルを選択して「完了」で分割されます。
例示の内容なら分割された範囲の2列目が求める内容になるでしょう。

関数だと
=MID(A1,SEARCH("@",A1,1)+1,SEARCH("@",A1,SEARCH("@",A1,1)+1)-(SEARCH("@",A1,1)+1))

VBAだと
Sub 分割()
  Dim i As Long
  Dim n As Variant
   For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    n = Split(Cells(i, 1), "@")
     Cells(i, 2) = n(1)
   Next i
End Sub
    • good
    • 2
この回答へのお礼

お返事が遅れて申し訳ございません。全て教えていただき感謝しております。
ご教授の通り完璧に出来ました。素晴らしいの一言です。今後は自分でもこの様な組み合わせ技を作れるように努力いたします。

お礼日時:2015/11/27 22:25

関数であれば


SEARCH関数やFIND関数で文字列中にある特定の文字の場所を検査して特定できる。また文字列の何文字目から検査を始めるのか指定できる。
MID関数で文字列の中から範囲を決めて文字を抜き出すことができる。
LEFT関数は文字列の左から文字数を指定して文字を抜き出せる。
RIGHT関数は文字列の右から文字列を指定して文字を抜き出せる。
これらの関数の組み合わせで可能です。工夫してみてください。

VBAであれば文字列の先頭から1文字ずつ抜き出して@から@までの文字を繋げばよい。

No.1とNo.2の回答ではそれぞれ示されていますが、
エラーになるケースを考慮してないので、回答にある関数式やVBAを利用するときは
自身で対策を考えておきましょう。
エラーになる例:@が2つ未満の時。
    • good
    • 1
この回答へのお礼

ありがとうございます。これからも色々勉強つづけてゆきます。

お礼日時:2015/11/27 22:22

=LEFT(MID(A1,FIND("@",A1)+1,99),FIND("@",MID(A1,FIND("@",A1)+1,99

))-1)
    • good
    • 1
この回答へのお礼

ありがとうございます。こちらも完璧に出来ました。一番に答えていただいた方にベストアンサーをつけさせていただきました事をお詫びするとともに、ご教授いただきました事に深く感謝いたします。

お礼日時:2015/11/27 22:29

「@」は全角文字?それとも半角文字?

    • good
    • 0
この回答へのお礼

お返事が遅れて申し訳ございません。全角でした。質問内容に不備がございました。全角、半角で内容が違う事に気づきませんでした、せっかくご教授していただけたかもしれないのに、申し訳ございませんでした。

お礼日時:2015/11/27 22:33

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

このQ&Aを見た人はこんなQ&Aも見ています