Google Sheets中FILTER函数部分匹配:基于姓氏匹配球员数据
基于姓氏匹配的Google Sheets公式调整
核心调整后的公式
=QUERY(FILTER('US Books Rebounds'!$D$2:$N$1500, 'US Books Rebounds'!$D$2:$D$1500="DraftKings", 'US Books Rebounds'!$I$2:$I$1500="Over", INDEX(SPLIT('US Books Rebounds'!$J$2:$J$1500," "),,2)=INDEX(SPLIT(B11," "),,2) ),"select Col8")
调整逻辑
原公式是直接匹配完整姓名,现在改成提取两边的姓氏做匹配:
- 用
SPLIT(单元格," ")把姓名按空格拆分成名和姓的数组 - 再用
INDEX(...,2)提取数组里的第二个元素(默认姓名是「名 姓」的格式,即姓氏为最后一段) - 让工作表J列的姓氏和B11的姓氏相等,这样不管名字是全称还是简称,只要姓氏对得上就能匹配成功
针对特殊姓氏的兼容方案
如果存在姓氏带空格的情况(比如「Van der Sar」),上面的方法会失效,改用下面的公式,它能精准提取最后一个空格后的所有内容作为姓氏:
=QUERY(FILTER('US Books Rebounds'!$D$2:$N$1500, 'US Books Rebounds'!$D$2:$D$1500="DraftKings", 'US Books Rebounds'!$I$2:$I$1500="Over", RIGHT('US Books Rebounds'!$J$2:$J$1500,LEN('US Books Rebounds'!$J$2:$J$1500)-FIND("@",SUBSTITUTE('US Books Rebounds'!$J$2:$J$1500," ","@",LEN('US Books Rebounds'!$J$2:$J$1500)-LEN(SUBSTITUTE('US Books Rebounds'!$J$2:$J$1500," ","")))))=RIGHT(B11,LEN(B11)-FIND("@",SUBSTITUTE(B11," ","@",LEN(B11)-LEN(SUBSTITUTE(B11," ",""))))) ),"select Col8")
内容的提问来源于stack exchange,提问作者ShadyTree
相关产品推荐
相关产品推荐

