Googleドキュメント/ Excelのテキスト文字列からメールアドレスを抽出し、セルのコンテンツが現在不明である(ユーザーが更新するまで)自動的にメールで送信したいと考えています。
たとえば、次のようになります。
こんにちは、
私の友人[email protected]。
おかげで、
ジョーの例
[〜#〜]または[〜#〜]
あなたは尋ねるべきです
私は現在この式を持っています:
=IFERROR((LEFT(CELL,FIND("@",CELL)-1))&"@"&(regexextract(CELL,"@(.*)")))
ほとんどすべてのケースで機能します(除く
a)例1のように、誰かが、またはを置く。メールの最後に
b)例2のように、電子メールが新しい行で始まる場合は、たとえば、.
尋ねる
これらを修正するために式をどのように調整できますか?
Google Spreadsheets には、これらのすばらしい組み込みの正規表現式があります
最初のものを使用してメールアドレスを抽出します。次の数式をGoogleスプレッドシートのセルに入力します。
_=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
_
A1
_は、チェックする文字列(ここではメール本文)が存在するセルです。Regexextract(A1,"\[A-z0-9._%+-\]+@\[A-z0-9.-\]+\.\[A-z\]{2,4}")
メールアドレスを返しますiferror(innerformula,"")
正規表現が何かを返すことができなかった場合に_#N/A
_を防止します。たとえば、有効なメールアドレスが見つかりませんでした[A-z0-9 ._%+-] + @ [A-z0-9 .-] +。[A-z] {2,4}
A-z
_は、A
とz
の間の任意の文字を表します。0-9
_は任意の数字を表します._%+-
_はそれらの標識自体を表します[ ]
_は、括弧内で使用できる単一の文字を表します+
_記号を_[ ]
_の後ろに置くと、前のパターンを無限に繰り返すことができます@
_には特別な意味はありません。文字通り_@
_記号を検索します[A-z0-9.-]+
_は上記と同じです。ただし、今回は__%+
_記号の後ろに_@
_を使用することはできません\.
_は、単一のポイントを検索します。 _\
_は通常任意の文字のプレースホルダーであるため、前に_.
_を付けてエスケープする必要があります。[A-z]{2,4}
_は、2、3、または4つの大文字と小文字を区別しない文字を検索しますこれは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)のインストールと使用は非常に簡単です。
ワークブックを保存すると、UDFも一緒に保存されます。 2003年以降のバージョンのExcelを使用している場合は、ファイルを.xlsxではなく.xlsmとして保存する必要があります。
UDFを削除するには:
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
これを機能させるには、マクロを有効にする必要があります!
ここではいくつかの例を示します。