将Google Sheets公式转换为数组时遇到问题求助
问题描述
我正在使用Google Sheets中的Size工作表,另有一张他人协助制作的WorkingSize工作表,其中ColR的公式运行完全正常。我需要让Size工作表的ColN实现和WorkingSize ColR完全一致的输出,但尝试将后者的公式转换为数组公式应用到ColN时始终失败。
Size工作表关键细节:
- 红色标记的问题数据区域,最终会迁移到其他工作表,我能熟练处理跨表引用。
- K6及以下单元格是披萨类型输入区,当前为自由文本,后续会设置成A2:A区域的下拉选项,A2:A的条目与F3:H3表头匹配,理论上A2:A新增条目时会自动新增对应列。
- ColL:存储面团重量的数值列
- ColM:指定要搜索的目标表格列
- ColN:需要将ColL的重量值四舍五入到对应披萨类型列的最近值,然后输出对应的尺寸。
解决方案
可以借助BYROW函数实现数组化计算,自动遍历每一行完成逻辑处理。在Size工作表的N6单元格输入以下数组公式:
=BYROW(L6:L,MAP(L6:L,M6:L,K6:L,LAMBDA(weight,target_col,pizza_type, IF(OR(weight="",target_col="",pizza_type=""),"", LET( weight_range, INDIRECT("'"&pizza_type&"'!"&target_col&":"&target_col), size_range, INDIRECT("'"&pizza_type&"'!B:B"), closest_weight, MIN(ABS(weight-weight_range)), INDEX(size_range,MATCH(closest_weight,ABS(weight-weight_range),0)) ) ) ))
公式逻辑说明:
BYROW+MAP组合遍历L、M、K列的每一行数据,将每行的重量、目标列、披萨类型传入自定义逻辑。IF判断空值,避免无输入时返回错误结果。LET定义变量简化公式:weight_range根据披萨类型和指定列获取对应的数据列,size_range获取对应披萨类型表的尺寸列。- 通过
MIN(ABS(weight-weight_range))找到与当前重量最接近的数值,再用MATCH+INDEX返回对应的尺寸。
如果原WorkingSize工作表ColR的公式逻辑有差异,只需调整LET内部的计算逻辑,保持BYROW的数组框架即可适配。
内容的提问来源于stack exchange,提问作者InStackOfHelp
相关产品推荐
相关产品推荐

