默认理解为数组公式
昨天我才发现,我把Excel文件升级完以后,我的搭档没有用过。因为连续好长一段时间,单位的作业时间都超长,每天都在正常办公室下班时间之前,还没结束。通常会折腾到晚上11点多,运气好的话,可能晚上七八点就结束了,反正总的来说,在我升级完我自己的文件以后,一直都只是我一个人使用。我在三台电脑上用过那个文件。我用的是同一个软件打开,用的是Microsoft 365。其中两台电脑是台式机,搭配的是64位的Win7系统,而另外一个是笔记本电脑,搭配的是64位Win10。二者是有区别的,因为某些功能只有在Win10系统才有更新,但到底具体是些什么,至今我还没搞清楚。自从用了Microsoft 365以后,我也说不准那个软件会什么时候给我更新,比如说晚上回到宿舍,单位的作业很晚才结束,我赶着要把数据搞完然后睡觉,但偏偏在那个时候,打开电脑,打开Microsoft 365,却告诉我他正在升级。这种状况很让人抓狂,因为晚上10-11点的时候,单位宿舍的网速可能非常慢。如果Office在那个时候进行升级,而那个安装包又非常大,这将是毁灭性的。所以下次大概我要给软件设置提醒我升级,但不能为我自动升级,应该由我去选择升级时间,这比开电脑就被吓一跳好多了。理论上说Win7系统上的Microsoft 365对应的是2016的功能,Win上的365对应的是2019的功能,但无论是Win7还是Win10,我的365还是会比传统的Office 2016高级那么一点点,至于高级在哪里,我不知道。
Microsoft是个神奇的存在。office软件不知道从什么版本开始都有32跟64位的版本,365貌似给我的安装包都是32位的版本,但是365在不同的Windows系统下面又有其他分支。
大体上我觉得,Win7下的Microsoft 365,应该跟Office 2016差不多吧。但昨天的实际遭遇告诉我,不是那回事。昨天我才发现,在我三台电脑上都开得好好的公式,在我的搭档的电脑上几乎所有地方都显示错误。这不可能吧!一开始,我怀疑是SUMIFS不能在2016上使用,但搜索过后发现那个函数已经在Office 2016上通行了,那到底是什么呢?结果发现原来是我搭档Excel的选项设置里面勾选了引用空单元格时显示错误,为什么居然有这种脑残设定呢?我用了这么多年的office,从来没遇到过这种事,昨天之前我甚至不知道原来还有个这样的设置。把那个勾去掉以后,还有不少公式的地方显示错误,点击那些公式后发现,在我的电脑上没有表示数组公式的地方,在她的电脑上居然默认成了数组公式,那些东西根本不是数组变成了数组,当然会出状况。所以解决办法也很简单,重新把那个公式确定变回普通公式,所有数据都回来了。为什么在不同的电脑上普通公式会自动变成数组公式呢?这个问题之前我也曾经遇到过,但没有让我的公式全部失效,所以我也就没有理会了,但我发现在某些函数前会多了个@的标志,至于那个东西是干什么的,我不知道。
带着这个问题,我立马去搜索。先是去百度,接着是去必应,最后我还是在Google找到了答案(1,2)。原来在Microsoft 365里,默认把所有公式都认为是数组公式,虽然没有很明确地标注出来。不是所有函数都会被误解,但一些包含相对变量的函数就会出现这种毛病,比如说公式里大量使用的indirect。这些公式在数组与非数组里理解是不一样的。当我的搭档在她电脑上把数组公式转为普通公式以后,在我的电脑上,发现数组公式前面多了个@,而这个东西。就是为了让老office兼容,在365里面有没有@,效果完全一致,但在老office里面,多了个@,就说明这个不是数组公式。
我不知道为什么office的进化经常会在一些相对引用与绝对引用里纠缠不清,之前有数据透视表的数据源变成绝对引用,搞死所有人。现在又有偷偷地把公式默认为数组公式。让老版本的软件看到一大片数据错误。他们在这个默默改变的的时候,其实完全可以推荐用户另存为别的Excel格式,通过转换格式把公式修正为老版本可以理解。
这个默认数组公式的问题我没见过中文解释,是不是因为谁用Microsoft 365中文版的人还不够多呢?