Excel / Googleスプレッドシートのテキスト文字列からメールを抽出する


9

私は、Googleドキュメント/ Excelのテキスト文字列からメールアドレスを抽出し、セルの内容が現在不明である(ユーザーが更新するまで)自動的にメールで送信することを考えています。

たとえば、次のようになります。

  1. こんにちは、

    私の友人example@example.com。

    おかげで、

    ジョーの例

または

  1. あなたは尋ねるべきです

    example@example.co.uk

私は現在この式を持っています:

=IFERROR((LEFT(CELL,FIND("@",CELL)-1))&"@"&(regexextract(CELL,"@(.*)"))) 

それは、ほとんどすべてのケースのために働く以外

a)例1のように、誰かが、またはを置く。メールの最後に

b)例2のように、電子メールが新しい行で始まる場合、それは例えば

尋ねる

example@example.com

これらを修正するために式をどのように調整できますか?

回答:


7

Googleスプレッドシートの場合

Googleスプレッドシートには、これらのすばらしい組み込みの正規表現式があります

最初のものを使用してメールアドレスを抽出します。次の数式をGoogleスプレッドシートのセルに入力します。

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
  • A1 チェックする文字列(この場合はメール本文)が存在するセル
  • 完全な式は2つの部分で構成されます。内側は正規表現式、外側はエラー防止用
  • Regexextract(A1,"\[A-z0-9._%+-\]+@\[A-z0-9.-\]+\.\[A-z\]{2,4}") メールアドレスを返します
  • iferror(innerformula,"")#N/A正規表現が何かを返すことができなかったときを防ぎます。たとえば、有効なメールアドレスが見つからなかった

ここに画像の説明を入力してください

正規表現パターンはどのように機能しますか?

[A-z0-9 ._%+-] + @ [A-z0-9 .-] +。[Az] {2,4}

  • A-zAとの間の任意の文字を表しますz
    大文字と小文字に注意してください。このように、大文字と小文字を区別しません
  • 0-9 任意の数字を表す
  • ._%+- それらの兆候自体を表す
  • [ ] 大括弧内で使用できる単一の文字を表します
  • +サインを後ろに置くと、[ ]前のパターンを無限に繰り返すことができます
  • @特別な意味はありません。文字通り@標識を探す
  • [A-z0-9.-]+上記と同じです。しかし、_%+後ろに許可されていない@記号今回
  • \.単一の点を検索します。通常は任意の文字のプレースホルダーである\ため、前にエスケープする.必要があります
  • 最後に[A-z]{2,4}、2、3、または4つの大文字と小文字を区別しない文字を検索します

使用されたリソース


役立つ回答をありがとうございます。私が持っていた考えの1つは、4文字を超える{2, 4}ような多くの今後のTLDが原因で制限される可能性があること.codesです。
Alex Booker

1

これはExcel用です。

次のユーザー定義関数(UDF)について考えてみます。

Public Function GetEmailAddy(Sin As String) As String
    Dim s As String
    If InStr(1, Sin, "@") = 0 Then
        GetEmailAddy = ""
        Exit Function
    End If

    s = Replace(Sin, Chr(10), " ")
    s = Replace(s, Chr(13), " ")
    s = Application.WorksheetFunction.Trim(s)
    ary = Split(s, " ")

    For Each a In ary
        If InStr(1, a, "@") > 0 Then
            GetEmailAddy = a
            Exit Function
        End If
    Next a
End Function

ユーザー定義関数(UDF)のインストールと使用は非常に簡単です。

  1. ALT-F11はVBEウィンドウを表示します
  2. ALT-I ALT-Mは新しいモジュールを開きます
  3. 内容を貼り付けてVBEウィンドウを閉じます

ワークブックを保存すると、UDFも一緒に保存されます。2003年以降のバージョンのExcelを使用している場合は、ファイルを.xlsxではなく.xlsmとして保存する必要があります。

UDFを削除するには:

  1. 上記のようにVBEウィンドウを開きます
  2. コードをクリアする
  3. VBEウィンドウを閉じる

ExcelからUDFを使用するには:

=GetEmailAddy(A1)

マクロ全般の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/excel/getstarted.htm

そして

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

UDFの詳細については、以下を参照してください。

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

これを機能させるには、マクロを有効にする必要があります!

ここではいくつかの例を示します。

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.