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

如何在Google Sheets的ARRAYFORMULA中实现动态筛选列表?

解决Google Sheets中用ARRAYFORMULA实现按国家动态列示城市的问题

直接把FILTER套进ARRAYFORMULA之所以没用,是因为FILTER返回的是一组结果,ARRAYFORMULA没法自动为每个国家单独触发一次筛选。给你两个可行的方案:

方案1:用BYROW+LAMBDA(推荐,适合新版Google Sheets)

直接用BYROW遍历国家列表的每一行,对每个国家单独执行筛选,公式如下:

=BYROW(Countries!$A$1:$A, LAMBDA(country, IF(country="",,FILTER(Cities!$A:$A, Cities!$B:$B=country))))
  • 把公式放在Countries列旁边的第一个单元格(比如B1),它会自动遍历A列所有国家,每个国家对应的城市会垂直排列在该国家的下方单元格里
  • 如果国家单元格是空的,公式会返回空,避免乱码
  • 后续新增国家或城市,公式会自动更新结果

方案2:用TEXTJOIN+SPLIT(兼容旧版)

如果你的Google Sheets版本不支持BYROW,可以用文本拼接再拆分的方式实现,公式如下:

=ARRAYFORMULA(IF(Countries!$A$1:$A="",,SPLIT(TEXTJOIN("|", TRUE, IF(Cities!$B:$B=Countries!$A$1:$A, Cities!$A:$A, "")), "|")))
  • 注意|是分隔符,要确保你的城市名称里不会用到这个符号,不然会拆分出错,可以换成其他不常用的符号(比如^^^)
  • 这个方案会把每个国家的城市用分隔符连起来,再拆分成单独的单元格,效果和下拉FILTER一致

注意事项

  • 如果你的Cities表有表头,记得把范围改成Cities!$A$2:$A和Cities!$B$2:$B,避免把表头当成数据筛选进去
  • 确保Cities表的国家列和Countries表的国家名称完全一致(大小写、空格都要匹配),不然筛选不到结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:02:04