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

如何在Google Sheets/Excel中用城市列表过滤含指定城市的地址?

筛选包含B列任意城市的A列地址

问题描述

需要从A列的地址数据中,筛选出包含B列任意一个城市名称的地址。示例数据如下:

地址(A列)城市(B列)
900 Rancho Diego Pkwy, Buellton, CA 92028Ventura
3850, Toepperwein Rd, Antonio, TX 78264San Antonio
3250 El Camino Real, Atascadero, CA 93444Buellton
2340 Palma Dr, Ventura, CA 93090New York
Valley Rd, Santa Maria, CA 93420

预期输出:

900 Rancho Diego Pkwy, Buellton, CA 92028
2340 Palma Dr, Ventura, CA 93090

现有公式失效原因

你尝试的几个公式逻辑均不符合需求:

  • =FILTER(A2:A, REGEXMATCH(A2:A, B2:B)):该公式是逐行配对检查(A2对应B2,A3对应B3),而非检查A列地址是否包含B列所有城市中的任意一个,无法匹配跨行的城市与地址。
  • =FILTER(A2:A, MATCH(A2:A, B2:B,0)) 和 =FILTER(A2:A, COUNTIF(B2:B, A2:A)):这两个函数都是精确匹配,要求A列地址与B列城市完全一致,但你的需求是地址中包含城市名称(模糊匹配),因此不适用。

正确解法

Google Sheets 公式

=FILTER(A2:A, REGEXMATCH(A2:A, TEXTJOIN("|", TRUE, B2:B)))

逻辑说明:

  1. TEXTJOIN("|", TRUE, B2:B):将B列非空的城市名称用|拼接成正则表达式的OR模式(例如Ventura|San Antonio|Buellton|New York),TRUE参数会自动忽略B列的空单元格。
  2. REGEXMATCH(A2:A, ...):检查A列每个地址是否包含拼接后的任意一个城市名称。
  3. FILTER(A2:A, ...):返回所有符合匹配条件的地址。

Excel 365 公式

Excel中无REGEXMATCH函数,可使用SEARCH结合ISNUMBER实现:

=FILTER(A2:A, ISNUMBER(SEARCH(TEXTJOIN("|", TRUE, B2:B), A2:A)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:35:28