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

Google Sheet中带REGEX的VLOOKUP查询需求求助

解决方案

要实现按MAC匹配并筛选以gi/te开头的端口记录,你可以用以下两种方法:

方法1:XLOOKUP + FILTER + ARRAYFORMULA(批量返回多列)

在第一个工作表的空白列(比如D2单元格)输入以下公式,一次性返回switch、port、VLAN三列数据:

=ARRAYFORMULA(IF(LEN(C2:C)=0,,IFERROR(XLOOKUP(C2:C, FILTER(Port!B:B, REGEXMATCH(Port!C:C, "^(?i)(gi|te)")), {Port!D:D, Port!C:C, Port!A:A}, ""), "")))

公式说明:

  • REGEXMATCH(Port!C:C, "^(?i)(gi|te)"):筛选Port表中端口(C列)以gi或te开头的记录,(?i)表示不区分大小写
  • FILTER(Port!B:B, ...):提取符合端口条件的MAC列表,作为XLOOKUP的匹配源
  • {Port!D:D, Port!C:C, Port!A:A}:指定要返回的列顺序(switch、port、VLAN)
  • ARRAYFORMULA:实现整列批量计算,无需下拉公式

方法2:BYROW + QUERY(逐行精准查询)

如果需要更灵活的查询逻辑,可使用BYROW配合QUERY:

=BYROW(C2:C, LAMBDA(mac, IF(LEN(mac)=0,,IFERROR(QUERY(Port!A:D, "select D,C,A where B = '"&mac&"' and lower(C) matches '^gi|^te' limit 1", 0), ""))))

公式说明:

  • BYROW(C2:C, LAMBDA(mac, ...)):逐行处理第一个工作表的每个MAC地址
  • QUERY(...):在Port表中查询匹配当前MAC,且端口(转小写后)以gi/te开头的记录,返回指定列,limit 1确保只取第一条匹配结果

为什么原公式无法实现筛选?

你之前用的VLOOKUP只能基于匹配列直接查找,无法先对数据源做筛选过滤。上述方法都是先筛选出符合端口条件的记录,再进行MAC匹配,从而实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:50:18