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

Google Sheets多选复选框时All Size列#REF问题求助

问题描述

我有两个工作表:

  • 第一个名为Raw Data,包含5列:选择(复选框)、产品代码、产品名称、所有尺码、总尺码数。其中“选择”列是复选框,“所有尺码”列存储可用尺码(如S, M, L),“总尺码数”列是可用尺码的数量(如3)。
  • 第二个名为Selected Product,包含3列:产品代码、产品名称、所有尺码。

需求

勾选Raw Data中某行的复选框时,需将对应数据同步到Selected Product,且“所有尺码”要拆分为多列。

当前问题

单个复选框选中时公式可正常运行,但选中多个复选框时,Selected Product的“所有尺码”列会出现#REF错误。

当前使用的公式(Selected Product工作表)

  • 产品代码列:
=ARRAYFORMULA(Filter(FLATTEN(SPLIT(REPT(FILTER('Raw Data'!$B$2:$B,'Raw Data'!$A$2:$A=TRUE)&"|",FILTER('Raw Data'!$E$2:$E,'Raw Data'!$A$2:$A=TRUE)),"|")),FLATTEN(SPLIT(REPT(FILTER('Raw Data'!$B$2:$B,'Raw Data'!$A$2:$A=TRUE)&"|",FILTER('Raw Data'!$E$2:$E,'Raw Data'!$A$2:$A=TRUE)),"|"))<>""))
  • 产品名称列(A2为当前行产品代码单元格):
=IF(A2="","",FILTER('Raw Data'!$C$2:$C,'Raw Data'!$B$2:$B=A2))
  • 所有尺码列(所有尺码列使用相同公式,A2为当前行产品代码单元格):
=IFERROR(IF(A2<>"", TRANSPOSE(SPLIT(INDEX(FILTER('Raw Data'!$D:$D, 'Raw Data'!$B:$B=A2), 0, 1), ",")), ""))
解决方案

问题根源

多个复选框选中时,FILTER('Raw Data'!$D:$D, 'Raw Data'!$B:$B=A2)可能返回多组结果,INDEX的0,1参数无法准确定位目标值,加上TRANSPOSE会导致数组溢出,触发#REF错误;同时产品名称列未用数组公式,批量处理效率低。

修正后的公式

  1. Selected Product的A列(产品代码):保留原公式即可,它能正确生成按尺码拆分后的产品代码序列。

  2. Selected Product的B列(产品名称):在B2单元格输入以下数组公式,一次性完成批量填充:

=ARRAYFORMULA(IF(A2:A="","",VLOOKUP(A2:A,'Raw Data'!B:C,2,FALSE)))
  1. Selected Product的C列及以后(尺码列):在C2单元格输入以下数组公式,自动拆分并填充所有尺码列:
=ARRAYFORMULA(IF(A2:A="","",SPLIT(VLOOKUP(A2:A,'Raw Data'!B:D,3,FALSE),",")))

说明

  • VLOOKUP更适合单值匹配场景,避免多结果返回的问题。
  • 尺码列直接用SPLIT拆分,无需TRANSPOSE,Google Sheets会自动将拆分结果填充到右侧列。
  • 所有公式通过ARRAYFORMULA实现批量处理,无需逐单元格设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:27:14