谷歌表格如何生成经Query/Filter筛选的单列数组结果
Google Sheets MLS数据批量计算方案
核心思路
利用Google Sheets的BYROW数组迭代函数,对目标城市列逐行执行原有计算逻辑,最终自动溢出整列结果,无需手动下拉填充公式。
公式改造方案
1. 原QUERY逻辑的数组化改造
原有单单元格公式逻辑是统计Raw Data中B列包含当前城市名的条目数,改造后整列生效的公式如下,只需要在结果列首个单元格(比如B2)输入一次即可自动填充所有对应行结果:
=BYROW(FILTER(A2:A,A2:A<>""),LAMBDA(city,COUNTA(IFERROR(QUERY('Raw Data'!A:D,"select A where B contains '"&city&"'",0),))))
如果需要保留A列空行位置返回空值而非截断结果,可以调整为如下写法:
=BYROW(A2:A,LAMBDA(city,IF(city="",,COUNTA(IFERROR(QUERY('Raw Data'!A:D,"select A where B contains '"&city&"'",0),))))
2. 原FILTER逻辑的数组化改造
原有单单元格公式逻辑是匹配Raw Data中B列等于处理后城市名的条目数,改造后整列生效的公式如下,在结果列首个单元格输入即可:
=BYROW(FILTER(A2:A,A2:A<>""),LAMBDA(city,COUNTA(IFERROR(FILTER('Raw Data'!B2:B,'Raw Data'!B2:B=REGEXREPLACE(city,".*" & city & ".*",city)),))))
同样可以调整为兼容空行的版本:
=BYROW(A2:A,LAMBDA(city,IF(city="",,COUNTA(IFERROR(FILTER('Raw Data'!B2:B,'Raw Data'!B2:B=REGEXREPLACE(city,".*" & city & ".*",city)),))))
补充说明
两种改造方案都完全兼容原有公式的计算逻辑,仅增加了数组迭代能力,不需要修改现有数据源结构。
内容的提问来源于stack exchange,提问作者Shay
相关产品推荐
相关产品推荐

