アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問板の乱立恐れ入ります。
納期がさしせまっていましてお分かりでしたら、ご教示頂けるとさいわいです。
以下のA1セルから、綺麗にメールアドレスを三つB2.C2,D2に取り出したいです。
ですが、現状下記の状態となっています。

________________________________
A1のセル
1000xxxx1@shop.rakuten.co.jp 1000xxxx2@rakuten.co.jp 1000xxxx3@shop.rakuten.co.jp

B2のセル
=SPLIT(A2,"/(^\s+)|(\s+$)/g")

結果
B2のセル
1000xxxx1@

C2のセル
shop.rakuten.co.jp 1000xxxx2@rakuten.co.jp 1000xxxx3@

D2のセル
shop.rakuten.co.jp

これは、文字コードの問題ですか?それとも正規表現かな?

もしお分かりでしたら、相談させて頂ければ幸いです。

A 回答 (4件)

ちなみに、エクセルでしたら区切り位置でスペースを指定すれば各セルに分けてくれます。

「【GAS】Split関数で空白文字を認識」の回答画像2
    • good
    • 0

私は、ワークシート上で使う使い方を知らないのですが、よかったら教えて下さいませんか。

アドインのオートメーションから入れてみました。
入れてみても、その関数は正しくないと返ってくるだけです。
GAS ? Basp のことではないでしょうか。

Split関数は 順に
szRegstr : パターン。
szTarget : 対象文字列。
limit   : 配列数の制限値。0を指定すると無制限。
戻り値   : 配列。

//
数式が成り立つなら、このようになるはずです。
=Split("/\s+/g", Range("A1"), 0)

確かに、想像以上に便利だということは言えるのですが、設定の仕方が分かりません。

例えば、VBA マクロではこのようになります。
配列のindex の最大数を取るのが面倒なので、ループにしました。

Sub TestSplit()
  Dim srTarget  As String
  Const Pattern As String = "/\s/g"
  Dim ar As Variant
  Dim v As Variant
  Dim i As Long
  srTarget = Range("A1").Value
  ar = Split(Pattern, srTarget, 0#)
  i = 2
  For Each v In ar
    If v <> "" Then
      Cells(2, i).Value = v
      i = i + 1
    End If
  Next v
End Sub
    • good
    • 0

こんにちは



【GAS】なるものを存じませんので、当たるも八卦ですが・・・

スペースで分割したければ
 (^\s+)|(\s+$)
の^や$は不要なのではないでしょうか?

単に /\s+/g ではうまくいきませんか?

完全なる山勘なので、違っていてもご容赦願います。
    • good
    • 1

エクセルの話ではないのでは?

    • good
    • 1

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