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

时间:2017-11-17 08:56:45

标签: excel excel-formula

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

我首先尝试连接RIGHT(..)公式并拆分点。遗憾的是我不知道如何使用excel公式递归地执行此操作,因此我交换删除除了最后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))

2 个答案:

答案 0 :(得分:1)

=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)))

这就是你问题的答案。

但请注意,解析顶级域名超过3个字符的电子邮件地址时会失败!所以它不会工作,例如test@test.info。请注意,顶级域名可以是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))

返回字符串中最后一个.之后的所有内容。

答案 1 :(得分:0)

如果是电子邮件,则可能会在左侧部分显示点字符,例如:john.johnson@email.com 所以,你不能只找到“。”你需要先找到@,然后在右子串中找到点。 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)