2017-11-17 22 views
1

Excel式を使用して電子メールアドレスからトップレベルドメインを抽出します。電子メールアドレスを抽出するためのExcel式の入れ子トップレベルドメイン

私は最初にRIGHT(..)を連結し、ドットの数式と分割を試みました。悲しいことに、これを再帰的に行う方法はExcelの公式では分かりませんので、最後の4文字以外のすべての文字を削除するようにスワップしました。問題は、数式を1つのセルに分割しても問題ありません。私がそれらを一緒に使ってみると、最初の内部式の出力しか得られません。これをどうやって解決するのですか?

=RIGHT(B8; LEN(B8)-(LEN(B8)-4)) 
=RIGHT(BF8;LEN(BF8)-FIND(".";BF8)) 

これらは1つのセルに分割された式です。そして、ここで両方を一緒

=RIGHT(RIGHT(B8; LEN(B8)-(LEN(B8)-4));LEN(B8)-FIND(".";B8)) 

私は

=RIGHT(B8; LEN(B8)-(LEN(B8)-4)) 

答えて

1

この=RIGHT(B8; LEN(B8)-(LEN(B8)-4))はちょうど=RIGHT(B8; 4)の無駄に複雑なバージョンであり、この式から最初の行と同じ戻り値を取得します。

=RIGHT(BF8;LEN(BF8)-FIND(".";BF8)) 

でBF8のためにこれを代入

は、だから、あなたの質問への答えだ

=RIGHT(RIGHT(B8; 4);4-FIND(".";RIGHT(B8; 4))) 

ように簡略化することができる。この

=RIGHT(RIGHT(B8; 4);LEN(RIGHT(B8; 4))-FIND(".";RIGHT(B8; 4))) 

が得られます。

ただし、は、トップレベルのドメイン名が3文字以上の電子メールアドレスを解析すると失敗します。!たとえば、 [email protected]。トップレベルのドメインはup to 63 characters longです。

this earlier answerでは、私はこの問題のより一般的な解決策を示しています。右側から所定の文字数を検索することに限定されません。

=MID(B8;FIND(CHAR(1);SUBSTITUTE(B8;".";CHAR(1);LEN(B8)-LEN(SUBSTITUTE(B8;".";""))))+1;LEN(B8)) 

は、最後の.の後の文字列をすべて文字列に返します。

+0

数式がすばらしく機能してくれてありがとうございました! –

0

電子メールの場合、左の部分にドット文字が表示されることがあります。[email protected] したがって、「。」を見つけることはできません。最初に@を見つけてから、右の部分文字列にドットを見つける必要があります。 あなたの手順は次のとおりです。

1. =FIND("@"; B8) 
find @ character place 

2. =RIGHT(B8;LEN(B8) - FIND("@"; B8)) 
get substring right from @ 

3. =FIND(".";RIGHT(B8;LEN(B8) - FIND("@"; B8))) 
find "." in step 2 substring 

4. =RIGHT(RIGHT(B8;LEN(B8) - FIND("@"; B8)); LEN(RIGHT(B8;LEN(B8) - FIND("@"; B8))) - FIND(".";RIGHT(B8;LEN(B8) - FIND("@"; B8)))) 
get right(step2; len(step2) - step3) 
+0

"*電子メールの場合、ドット部分が左に表示されることがある*そのため、OPは最後の4文字のみを検索していたのはそのためです。 –

+0

だから私の解決策はより一般的です - どんなドメインの長さでも。 – Vmesser

関連する問題