别再为WPS中的#SPILL!错误崩溃,一篇讲透!
WPS函数专家
WPS在12月左右更新了动态数组,这本是一个好事,但是很多过去不严谨的写法,导致更新后出现的各种报错问题,其中最典型的就是VLOOKUP整列导致的“#SPILL!”错误!
比如很多新手,使用VLOOKUP函数,在过去喜欢整列引用,在没更新动态数组的情况下,这个公式90%情况下是不报报错的,但是并不表示用法正确!
▼ 就是下面这玩意
▍隐式交叉
下面是更新前的案例演示。正常需求都是查询内容和结果在同一样,这样是没有问题,这个过去的“隐式交叉”!
但是如果我们查询内容和需要的结果不在同一行呢?结果就报错了!
如果我们引用整列或者多个单元格区域,返回区域也就是引用区域和当前行的交叉点的单元格内容
下面就是更新前的演示,G2单元格的查询内容,引用了整列和当前行交叉,正好是A2单元格,所以返回的是A2对应的查询结果,其实我们想要的是A1的结果,也就是这种写法,没办法实现错位显示、或者显示在下面等位置都是不行的,只能同一行!
正确的解法是这样,过去VLOOKUP第一参数也不支持单元格数组!我们应该单独写一个查询的单元格!
▼ 正确写法
那么更新后为什么会报错呢?更新动态数组后,VLOOKUP函数第一参数支持数组了,也就是可以依次返回多个结果!
▍#SPILL!错误详解
SPILL直接翻译就是溢出,这是一个新的函数错误类型,一句话来说就是公式的结果无法正常溢出,大部分情况都是由于有阻挡!
比如下面ROW(1:3)需要一个3行一列的区域来显示结果,但是下面有个2挡住了,区域不够,扩展不开,导致错误!
点击小绿帽,也能看到错误提示,虽然显示两个提示,但是本质就一个,就有阻挡,扩展不开
了解了,我们来看开头的问题,为什么会出现错误,就明了了吧!
第一参数引用整列,那么结果也应该是整列和A列对应显示,但是我们公式写在了E2,也就是第二行,比需要的行数少了1,导致扩展不开!
当你把公式放在第一行,公式不再报错了,对应的姓名成绩也能查询出来了,但是这样写非常不好的习惯,我们查询只有4行,写整理就是返回整列查询,Excel有1048576行,冗余太卡,这样的公式太多,分分钟卡死!
除了上面的错误,其实还有一种特殊情况,也会导致这样的错误,也就是使用随机数的情况,可能是内部处理问题,WPS目前不支持随机函数结果溢出。给出的说明是溢出区域未知
同样的函数公式,只有一个结果是不会报错,其他多值随机都会返回#SPILL!错误!
这样的公式,在OFFICE中一般不会出错,但是在一些随机数据源用其他函数处理时OFFICE中也会出错!
比如这样,又作为其他的数据源,有一定的概率出现溢出错误!
下面是正常不出错的结果,也就是说部分正常,部分情况出错,不稳定
问题应该说清楚了!下面我们来看看处理方案!
▍处理方案
针对VLOOKUP函数引用整理的问题,我们只要加一个"@"符号即可,这个算是代替过去的“隐藏交叉”,因为现在支持动态数组了!
上面虽然可以解决问题,但是这并不是我们推荐的写法,因为第一参数支持多单元格,直接引用多单元格区域,结果自动溢出,不用下拉,一次搞定!这也就是我们开头说到的动态数组更新是一件“好事”!更加方便,也更容易理解数组!
▼动画演示
▍文章小结
1、“#SPILL”错误主要有两个方面,一是多个值结果因为有阻挡扩展不开,其次是随机数扩展区域未知,主要关注第一种!
2、错误处理方法:选择合适的查询区域,其次,如果确实要返回多值,清理一下函数公式周围区域,留有足够的扩展区域。
3、“@”符号用于代替过去的“隐式交叉”,返回当前行的交叉点,用于数组,返回数组的首个内容(补充)
大家反响这么激烈,主要是新事物不了解和过去不严谨的写法导致,其实了解后,你会发现这波更新,真的是非常好的事情,数组公式多值结果更加直观可读,过去FILTER等函数也可以直接使用,而不再需要“三键”录入。
更多有关动态数组相关知识!欢迎一起交流探讨!
创作者俱乐部成员
WPS函数专家
创作者俱乐部成员
WPS函数专家
创作者俱乐部成员
WPS函数专家
WPS函数专家