You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel技术问询:从F列提取符合条件的未重复数据至D列

解决方案:从F列提取符合条件的数据到D列

针对你的需求,下面提供两种符合你描述逻辑的Excel公式实现方式,均支持自动跳过已在D列出现过前10位的内容:

方法一:优先匹配末尾条件,再跳过已添加项

从最后插入数据的行开始,先筛选出末尾10位为xxx或yyy的项,再跳过前10位已在D列出现过的内容,返回第一个符合要求的结果。

在D1单元格输入以下公式(Excel 365/2021直接回车,旧版Excel需按Ctrl+Shift+Enter作为数组公式输入):

=INDEX(F:F,SMALL(IF((OR(RIGHT(F:F,10)="xxx",RIGHT(F:F,10)="yyy"))*(COUNTIF(D$1:D1,LEFT(F:F,10))=0)*(F:F<>""),ROW(F:F),""),1))

公式说明:

  • OR(RIGHT(F:F,10)="xxx",RIGHT(F:F,10)="yyy"):校验F列内容末尾10位是否符合要求
  • COUNTIF(D$1:D1,LEFT(F:F,10))=0:确保当前项的前10位未在D列已输入的内容中出现
  • F:F<>"":排除F列的空白行
  • SMALL(...,1):从符合所有条件的行号中取最小的(即第一个匹配项)
  • 下拉D列公式时,D$1:D1会自动扩展为D$1:D2、D$1:D3,实现动态校验已插入的内容

方法二:先排除已使用项,再校验末尾条件

从最后插入数据的行开始,先筛选出前10位未在D列出现过的项,再校验其末尾是否符合xxx或yyy要求,返回第一个匹配结果。

在D1单元格输入以下公式(同样注意数组公式的输入方式):

=INDEX(F:F,SMALL(IF((COUNTIF(D$1:D1,LEFT(F:F,10))=0)*(OR(RIGHT(F:F,10)="xxx",RIGHT(F:F,10)="yyy"))*(F:F<>""),ROW(F:F),""),1))

公式说明:

  • 核心逻辑与方法一一致,仅调整了条件判断的顺序,先排除已使用的前10位,再校验末尾格式
  • 实际效果与方法一相同,可根据你的习惯选择

注意事项

  • 如果F列数据范围固定(比如F1:F1000),建议将公式中的F:F替换为具体范围,提升计算效率
  • 若所有符合条件的内容都已提取到D列,公式会返回#NUM!,可嵌套IFERROR处理为空白:
    =IFERROR(INDEX(F:F,SMALL(IF((OR(RIGHT(F:F,10)="xxx",RIGHT(F:F,10)="yyy"))*(COUNTIF(D$1:D1,LEFT(F:F,10))=0)*(F:F<>""),ROW(F:F),""),1)),"")
    

内容的提问来源于stack exchange,提问作者James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:25:08