嵌套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)