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

Google Sheets中结合Regexmatch与partial vlookup实现字符串匹配提取

Google Sheets 实现需求的函数方案

假设你的编码列表固定存储在B1:B4区域,可根据实际编码数量调整范围,以下是两种常用实现方案:

方案1:单单元格下拉公式(C1输入后下拉到所有需要计算的行)

=IFERROR(
  LET(
    matched_code, XLOOKUP(TRUE, REGEXMATCH(A1, B$1:B$4), B$1:B$4, ""),
    IF(matched_code="", "", IF(REGEXMATCH(A1, "Y\s*"&matched_code), "Y "&matched_code, matched_code))
  ),
"")

如果你的Google Sheets版本不支持LET函数,可以用嵌套写法:
=IFERROR(IF(REGEXMATCH(A1,"Y\s*"&XLOOKUP(TRUE,REGEXMATCH(A1,B$1:B$4),B$1:B$4,"")),"Y "&XLOOKUP(TRUE,REGEXMATCH(A1,B$1:B$4),B$1:B$4,""),XLOOKUP(TRUE,REGEXMATCH(A1,B$1:B$4),B$1:B$4,"")),"")

方案2:整列自动溢出公式(仅需在C1输入一次,自动填充所有A列有数据的行)

=BYROW(A1:A, LAMBDA(row,
  IF(row="", "",
    IFERROR(
      LET(
        matched, XLOOKUP(TRUE, REGEXMATCH(row, B1:B4), B1:B4, ""),
        IF(matched="", "", IF(REGEXMATCH(row, "Y\s*"&matched), "Y "&matched, matched))
      ),
    "")
  )
))

逻辑说明

  • 先遍历整个B列的编码库,匹配A列当前行存在的编码
  • 判断匹配到的编码前是否带Y(正则的\s*兼容Y和编码之间有多个空格、无空格的场景),符合则返回Y 编码,否则直接返回编码
  • 未匹配到任何编码时返回空单元格
  • 如果单条A列数据可能同时匹配多个B列编码,把XLOOKUP替换为FILTER后用TEXTJOIN拼接即可返回所有匹配结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:12:05