嵌套Excel公式以提取电子邮件地址顶级域

我想使用Excel公式从电子邮件地址中提取顶级域名。

我先试着连接RIGHT(..)公式和分割点。 可悲的是,我不知道如何用Excel公式recursion地做到这一点,所以我换掉了除了最后4个字符以外的所有字符。现在的问题是,当我将公式分割成单独的单元格时,它的工作原理非常好。 如果我尝试一起使用它们,我只能得到第一个内部公式的输出。 我该如何解决?

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

这些是分成单个单元格的公式。 在这里一起

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

从这个公式得到与第一行相同的返回值

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

=RIGHT(B8; LEN(B8)-(LEN(B8)-4))只是一个无用的复杂版本=RIGHT(B8; 4)

用BF8代替这个

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

产生这个

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

这可以简化为

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

所以这就是你的问题的答案。

但请注意, parsing顶级域名超过3个字符的电子邮件地址将会失败 ! 所以它不适用于例如test@test.info 。 请注意,顶级域名最长可达63个字符 !

在这个较早的答案中 ,我给出了这个问题的更一般的解决scheme,不仅限于从右边search预定数量的字符。

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

返回最后一切. 在string中。

点字符可能出现在电子邮件的左边部分,如:john.johnson@email.com所以,你不能find“。” 你需要先find@,然后在右边的子串中find点。 Tehese是你的脚步:

 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)