Google Sheets Query函数实现多药品关联结果批量匹配与格式整理
批量匹配药品关联组合的解决方案
公式实现(优先使用QUERY函数)
假设你的单一药品列表在Sheet1的A2:A(A1为表头),Page2的组合药品在A2:A(A1为表头),在Sheet1的B2单元格输入以下公式,即可自动生成所有匹配结果,无需下拉或修改公式:
=ARRAYFORMULA( IFERROR( QUERY( FLATTEN( IF(ISNUMBER(SEARCH(Sheet1!A2:A, Page2!A2:A)), Sheet1!A2:A&"|"&Page2!A2:A, "") ), "SELECT SPLIT(Col1, '|') WHERE Col1 <> ''", 0 ), "Not found" ) )
公式拆解
- 匹配判断:
SEARCH(Sheet1!A2:A, Page2!A2:A)检查每个单一药品是否存在于组合药品中,匹配成功返回位置数值,失败返回错误值 - 拼接结果:
IF(ISNUMBER(...), Sheet1!A2:A&"|"&Page2!A2:A, "")将匹配成功的单一药品与组合药用|拼接成字符串,未匹配的留空 - 二维转一维:
FLATTEN(...)把多对多的匹配结果转换成一维列表,解决原公式只能返回单行的问题 - 拆分与过滤:
QUERY函数过滤空值,并将拼接的字符串拆分为两列(A列单一药品,B列组合药品),0表示结果不带表头 - 自动批量应用:
ARRAYFORMULA让公式覆盖整列,无需手动下拉 - 异常处理:
IFERROR在无匹配结果时显示Not found
调整说明
- 若你的数据起始行或工作表名称不同,直接修改公式中的
Sheet1!A2:A、Page2!A2:A为实际范围 - 药品名称含特殊字符时,
SEARCH依然支持模糊匹配,无需额外处理
内容的提问来源于stack exchange,提问作者Giovanna Marques Rodrigues
相关产品推荐
相关产品推荐

