Excel无需VBA实现多参考点条件下两表匹配筛选房产ID的公式求助
多参考点匹配房产ID可用Excel公式
以下公式可直接在单元格输入,无需VBA,适配需求表意向参考点为多个逗号分隔值的场景:
适用Excel 365/2021及以上版本(推荐)
=TRANSPOSE(FILTER(Table_Prop[Property ID], (Table_Prop[Offer type]=Table_Req[@[意向交易类型]])* (BYROW(Table_Prop[Reference points],LAMBDA(x,SUMPRODUCT(--ISNUMBER(SEARCH(TRIM(FILTERXML("<t><s>"&SUBSTITUTE(Table_Req[@[意向区位参考点]],",","</s><s>")&"</s></t>","//s")),x)))>0)), "NO MATCHES"))
你之前尝试的公式报错核心原因:
OR函数无法直接对数组逐行返回判断结果,且COUNTIF的区域、条件参数顺序写反,导致匹配逻辑失效。
逻辑说明
- 交易类型匹配直接用等值判断,比原
SEARCH写法更精准,避免不同交易类型存在包含关系时误匹配 - 先用
FILTERXML拆分当前需求的多个意向参考点,搭配TRIM去除参考点前后可能存在的空格 - 通过
BYROW遍历每一条房产的参考点字段,用SUMPRODUCT统计当前房产匹配到的意向参考点数量,只要数量>0即满足区位匹配要求 - 最后用
TRANSPOSE把垂直返回的房产ID数组转为水平排列,符合你预期的输出格式
兼容无LAMBDA函数的Excel版本
如果你使用的Excel版本不支持LAMBDA函数,可使用以下MMULT版本公式:
=TRANSPOSE(FILTER(Table_Prop[Property ID], (Table_Prop[Offer type]=Table_Req[@[意向交易类型]])* (MMULT(--ISNUMBER(SEARCH(TRANSPOSE(TRIM(FILTERXML("<t><s>"&SUBSTITUTE(Table_Req[@[意向区位参考点]],",","</s><s>")&"</s></t>","//s"))),Table_Prop[Reference points])),ROW(INDIRECT("1:"&COUNTA(FILTERXML("<t><s>"&SUBSTITUTE(Table_Req[@[意向区位参考点]],",","</s><s>")&"</s></t>","//s"))))^0)>0), "NO MATCHES"))
内容的提问来源于stack exchange,提问作者Stroe Gabi
相关产品推荐
相关产品推荐

