web-dev-qa-db-ja.com

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

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

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

  1. こんにちは、

    私の友人[email protected]

    おかげで、

    ジョーの例

[〜#〜]または[〜#〜]

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

    [email protected]

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

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

ほとんどすべてのケースで機能します(除く

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

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

尋ねる

[email protected]

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

9
Tom

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

Google Spreadsheets には、これらのすばらしい組み込みの正規表現式があります

最初のものを使用してメールアドレスを抽出します。次の数式を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_を防止します。たとえば、有効なメールアドレスが見つかりませんでした

enter image description here

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

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

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

使用されたリソース

7
nixda

これはExcel用です。

次のUser Defined Function(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

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

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

enter image description here

1
Gary's Student