我试图从“en_US@”和“;”之间提取产品信息,例如,如果我收到“en_US@Terminal Block;”,我希望返回 Terminal Block。我的方法是:
=MID(B2, FIND("en_US@",B2)+6, FIND(";", B2, FIND("@", B2)+1)-FIND("@",B2)-1)
哪个是对的。
我的问题是,我是否可以编写代码来包含“??_??@”作为代码查找的选项,以便我可以查找“en_US”或“??_??”来开始文本提取?
答案1
这似乎有效:
=IF(SUMPRODUCT( -- ISNUMBER(SEARCH({"en_US@","~?~?_~?~?@"},A1)))>0,MID(A1, FIND("@",A1)+1, FIND(";", A1, FIND("@", A1)+1)-FIND("@",A1)-1),"NA")
魔法在于 SUMPRODUCT( -- ISNUMBER(SEARCH({...},cell)))>0 位,讨论这里
要专门使用 SEARCH() 来查找“?”,您必须用波浪号来分隔每个字符,因为搜索默认将“?”视为通配符。
与原文相比,唯一的变化是从 IF() 开始,查看它是否找到其中一个字符序列,然后找到“@”。