一、使用`FILTER`函数(推荐)
`FILTER`函数是Excel 365及更高版本中强大的筛选工具,可按条件返回整行或整列数据。
公式结构
`=FILTER(数据区域, 条件区域=条件表达式)`
示例:提取包含"音响"的商品名
`=FILTER(A2:A13, ISNUMBER(FIND("音响", A2:A13)))`
此公式会返回A2:A13中包含"音响"的所有行。
优点
结果自动更新,适合动态数据源。
二、使用`IFERROR`与`INDEX`、`SMALL`组合(适用于旧版本)
适用于Excel 2019及以下版本,但处理大数据时可能效率较低。
公式结构
`=IFERROR(INDEX(数据区域, SMALL(IF(ISNUMBER(FIND(关键字, 数据区域)), ROW(数据区域)), 行号)), "")`
需按`Ctrl+Shift+Enter`输入为数组公式。
示例:提取部门为"销售"的姓名
`=IFERROR(INDEX(A2:A9, SMALL(IF(B2:B9="销售", ROW(2:9)), ROW(1))), "")`
此公式会返回B2:B9中部门为"销售"对应的A列姓名。
三、使用`VLOOKUP`结合辅助列(适用于单列匹配)
适用于精确匹配单一关键字的场景。
步骤
1. 在辅助列(如C列)输入公式:`=IF(ISNUMBER(FIND("音响", A2)), A2, "")`
2. 将C列向下填充至数据末尾
3. 使用`VLOOKUP`筛选辅助列中的非空值:`=VLOOKUP(TRUE, C2:C100, 1, FALSE)`
*注意:此方法仅适用于单列匹配且关键字唯一的情况。
四、使用`TEXTJOIN`与`FILTER`结合(进阶用法)
适用于需要提取匹配项并组合其他数据的场景。
示例:提取包含"销售"的姓名及部门
`=TEXTJOIN(", ", TRUE, FILTER(A2:B9, ISNUMBER(FIND("销售", A2:A9)))))`
此公式会返回姓名与部门用逗号分隔的文本。
注意事项
数据量较大时:
`FILTER`和数组公式可能运行缓慢,建议先使用筛选功能或VBA宏优化。
错误处理:
使用`IFERROR`或`TEXTJOIN`可避免公式返回错误值。
兼容性:
`FILTER`函数仅适用于Office 365及更高版本,旧版本需使用其他方法。
通过以上方法,您可根据具体需求选择合适的公式或工具,高效提取包含关键字的数据。