Excel中VSTACK+OFFSET公式遇空数据报错的解决咨询
解决VSTACK+OFFSET处理空数据集的报错问题
方法1:判断非空后再堆叠
先检查每个数据区域是否有内容,只有非空时才用OFFSET提取,空区域返回空数组(避免生成错误行):
=VSTACK(IF(COUNTA(B2:B4)=0, --"", OFFSET(B2,0,0,COUNTA(B2:B4),2)), IF(COUNTA(E2:E4)=0, --"", OFFSET(E2,0,0,COUNTA(E2:E4),2)))
--""会生成一个空数组,VSTACK遇到空数组会自动跳过,不会出现#N/A或空行。
方法2:用TOCOL+HSTACK简化(Excel 365/2021+)
如果你的Excel版本支持新函数,直接用TOCOL忽略空值,再组合成列:
=VSTACK( HSTACK(TOCOL(B2:B4,1), TOCOL(C2:C4,1)), HSTACK(TOCOL(E2:E4,1), TOCOL(F2:F4,1)) )
TOCOL的第二个参数1表示忽略空单元格,空数据集会生成空数组,VSTACK不会产生错误行,写法更简洁。
方法3:修正IFERROR的返回值
之前用IFERROR没生效,大概率是返回了单个空值而非空数组,改成返回空数组即可:
=VSTACK(IFERROR(OFFSET(B2,0,0,COUNTA(B2:B4),2), --""), IFERROR(OFFSET(E2,0,0,COUNTA(E2:E4),2), --""))
注意别用""代替--"",单个文本空值会被VSTACK当成一行,而--""生成的空数组会被自动忽略。
内容的提问来源于stack exchange,提问作者Michael Liew
相关产品推荐
相关产品推荐

