Google Sheets报错“Invalid call to non-function”的原因及解决方法
错误成因与解决方法
错误成因
公式触发“Invalid call to non-function”错误的核心原因是BYROW返回了二维数组,导致后续SPLIT无法正常解析参数:
- 当BYROW遍历A2:A3的每一行时,你在REPT函数里使用了
B2:B3整列范围,这会让每一行的计算都返回包含B2、B3两个值的数组,最终BYROW输出的是一个2行2列的二维数组。 - 外层LAMBDA将这个二维数组传递给SPLIT,但SPLIT仅能处理一维文本值,无法识别二维数组结构,因此触发非函数调用无效的错误。
解决方法
调整BYROW内部的引用逻辑,让每一行仅对应B列的同一行数据,修改后的公式如下:
=ArrayFormula(FLATTEN(SPLIT(BYROW(A2:A3, LAMBDA(r, REPT(INDEX(B:B,ROW(r))&"♥", r))), "♥")))
或者更简洁的写法(直接利用BYROW的行上下文):
=ArrayFormula(FLATTEN(SPLIT(BYROW(A2:B3, LAMBDA(row, REPT(INDEX(row,2)&"♥", INDEX(row,1)))), "♥")))
关键修改说明
- 将原公式中
REPT(B2:B3&"♥",rp)改为REPT(INDEX(B:B,ROW(rp))&"♥",rp),确保每一行仅引用当前行的B列值,让BYROW返回一维数组。 - 移除了外层多余的LAMBDA嵌套,直接将BYROW的结果传递给SPLIT,公式结构更清晰。
内容的提问来源于stack exchange,提问作者Osm
相关产品推荐
相关产品推荐

