筛选表格中带有某些字段的行
比如想筛选K列中包含M1字样的 且只要M1字样后面的日期年月日K2 单元格内容[TPM审批]王新雨 2026-09-09 13:41:53N13.5T 以下DCDCCDC[定点确认]赵邦川 2026-08-31 12:46:39M1刘轩 2026-09-10 20:33:46第一步选个空单元格放要跟K2同行公式IF(ISNUMBER(FIND(M1,K6)),M1,IF(ISNUMBER(FIND(N1,K6)),N1,IF(ISNUMBER(FIND(N2,K6)),N2,)))公式原理解析先看有没有 M1有就出 M1没有再看有没有 N1没有再看 N2全都没有就空白。第二步选个空单元格放要跟K2同行IFERROR(--MID(K6,FIND(20,K6,MIN(IFERROR(FIND(M1,K6),9999),IFERROR(FIND(N1,K6),9999),IFERROR(FIND(N2,K6),9999))),10),)逐段拆开讲一句一句翻译成人话我们把这一长串从最里面往外拆公式是嵌套的先算最内层IFERROR(FIND(M1,K6),9999)✅ 翻译 去 K6 单元格找文字M1如果找到了 → 返回 M1 在单元格里的位置数字比如在第 1 个字如果找不到 M1 → 给它一个很大的数字9999代表很远很远不参与选择IFERROR(FIND(N1,K6),9999)✅ 翻译同理找N1找不到就写 9999IFERROR(FIND(N2,K6),9999)✅ 翻译同理找N2找不到就写 9999MIN( 上面这三个结果 )✅ 翻译取这 3 个数字里最小的那一个 作用找到M1/N1/N2三个标签里最先出现的那一个的位置比如 K6 里面先出现 N1N1 位置 1M1、N2 都是 9999MIN 就拿到 1。FIND(20,K6, 刚才MIN拿到的位置 )✅ 翻译 从【刚才找到标签M1/N1/N2的位置】往后开始搜索找20这就是解决你刚才的痛点 N1 后面带(3.5T以下)这些文字也不怕它会跳过 N1 后面所有文字在 N1 之后去找第一个20也就是 2026 年份开头MID(K6, 找到20的位置 , 10 )✅ 翻译从找到 “20” 的地方截取后面 10 个字符日期格式2026-08-31刚好是 10 个字完美拿到日期文本。--MID(...)✅ 翻译两个减号把拿到的文本2026-08-31转成表格能识别的【日期】不然它只是一串文字不是日期IFERROR( 前面全部 , )✅ 翻译兜底保护 如果 K6 里面没有 M1/N1/N2公式会报错IFERROR 捕获错误直接返回空白单元格不出现 #VALUE!一句话总结整套逻辑在 K6 里找 M1、N1、N2 三个标记锁定最先出现的那个标记只在这个标记往后的内容里搜索 20 开头的日期抓出 10 位日期转成真正日期找不到标记就留空不报错根据你自身需要删减吧 有时候只需要筛选满足一个条件的只有一个筛选条件简单版比如想筛AV19单元格中 包含项目成立的 IF(ISNUMBER(FIND(项目成立,AV19)),项目成立,)比如想筛AV19单元格中 包含项目成立的 且只要 项目成立 这几个字紧挨着的日期IFERROR(--MID(AV19,FIND(20,AV19,IFERROR(FIND(项目成立,AV19),9999)),10),)