我想使用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))
答案 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)