求助:从Outlook邮件主题提取指定内容并在Excel中查找的方法
嘿,我来帮你搞定这两个Excel问题!不管是提取邮件主题里的编号,还是用FIND定位内容,都有靠谱的解决办法,往下看:
你之前的方法只返回true/false,应该是用了判断类的函数(比如ISNUMBER+SEARCH),现在换下面的方法就能直接拿到具体编号:
Excel 365/2021用户优先用这个:REGEXEXTRACT函数
这个函数自带正则匹配,完美适配固定格式的编号。假设邮件主题在A1单元格,直接用公式:=REGEXEXTRACT(A1,"\d{4}-\d{2}")
解释一下:\d{4}匹配4位数字,-精准匹配连字符,\d{2}匹配后面的2位数字,刚好对应你要的1234-56格式。只要主题里只有这一组符合的编号,就能直接提取出来。旧版Excel用户看这里:MID+FIND组合公式
如果你的Excel没有REGEXEXTRACT(比如2019及更早版本),可以用这个兼容方案:
假设编号在两个逗号之间(像你的示例那样:", 1234-56,"),公式:=MID(A1,FIND(",",A1)+2,FIND(",",A1,FIND(",",A1)+1)-FIND(",",A1)-2)
原理是先找到第一个逗号的位置,往后跳2位(跳过逗号和空格),再计算两个逗号之间的长度,提取中间的内容。
如果编号格式固定是4位+连字符+2位,也可以简化成:=MID(A1,FIND("-",A1)-4,6)
这个是找到连字符的位置,往前取4位,总共取6个字符(4+1+2),前提是主题里只有这一个带连字符的数字串。
你之前用FIND没成功,大概率是用法没踩对要点,给你梳理正确的用法和排查技巧:
基础用法:找编号在单元格里的位置
FIND的语法是FIND(要找的文本, 目标单元格, [开始查找的位置])。比如要找A1里的"1234-56",公式:=FIND("1234-56",A1)
它会返回这个编号第一个字符在A1里的起始位置(比如示例里可能返回26,具体取决于前面的文本长度)。定位表格中包含编号的单元格
如果是想在整列/整张表中找到包含该编号的行,可以用FIND配合IF做标记:=IF(ISNUMBER(FIND("1234-56",A1)),"已找到","未找到")
把这个公式下拉,就能看到哪些行的主题包含目标编号。常见坑点排查
- 有没有输错编号?比如多打了空格、符号,或者大小写不对(FIND是区分大小写的,如果有字母的话,不想区分就换用SEARCH函数)
- 编号周围的空格要不要算进去?比如主题里是" 1234-56 ",那查找文本就要写成" 1234-56 ",或者用
TRIM处理后再查找。
内容的提问来源于stack exchange,提问作者Sneakymist

