2025-04
15

确定买断Office的版本

By xrspook @ 8:49:38 归类于: 烂日记

经过了Microsoft 365惊魂一夜之后,我意识到我不能把自己吊死在一棵树上,所以即便我要继续用 Microsoft Office软件,我也不能把所有电脑都用上365版本,主力机我可以继续用365,因为显然那个是最顺手的,如果他们能一直把服务提供下去,我也愿意一直每年都给他们一些费用。万一某一天365故障了,不让我们用了,我也得有对策,所以我的计划是所有的备用电脑全部装上proplus的版本,至于要装2019、2021还是2024,得考虑一下。2019跟2021比起来,我肯定会选2021,因为经过那么多年,其实2021也已经成熟了。之前不知道听谁说2016跟2019会在同一时间停止支持。

在我还不确定是要用2021还是2024的时候,突然间有人在ExcelHome上面问除了Microsoft 365以外,还有哪个版本的office是支持溢出函数。溢出函数是什么?ExcelHome的大神没有马上反应过来,但是我反应过来了,因为我用过那些函数,当我的设置不当的时候,在理论上应该显示正确答案的地方就会出现“溢出”两个字。溢出函数说白了就是动态数组函数。以前的数组函数,你必须要用三键结束,而且你还要把函数扩充到你想要的范围,但不知道是从2019还是2021开始就有了溢出函数这个东西,又或者准确的来说应该是动态数组函数,这些动态数组函数你只需要在一个单元格里设定,它的结果会扩充到其它的单元格,会向右向下扩充。至于扩充多少,就看你所设定的那个函数能获取到什么样的结果。正如上面我所说,如果你的函数设定是不对的,那么你就会得到溢出这两个字。如果你把单元格定位在动态数组函数非公式设定的那个单元格,会发现里面是主单元格灰色的公式,但实际上你看上去那个单元格又是有数据的。这是很方便的东西,也很奇妙,但如果你直接想把那个结果进一步使用,又很有难度。哪怕你想把那些东西建立一个超级表实际上也是做不到的,你想把那些数据作为数据透视表的元素去引用,也是不行的。所以这个动态数组函数到底用在什么地方呢?我觉得只能是最后的一步,就是你想做的那个事情的最后一步,因为那之后你已经没办法再继续操作下去了,情况就像在VBA的SQL里,把数据透视化展示就是语句的最后一步,透视处理之后的东西,你再也没办法进一步操作了。

我用过动态数组函数,但用得不多。因为我知道很多人的office还是挺低端的,可能不支持这个玩意,我看到他们看不到,文件发过去等于没用。动态数组函数我用得不多,但xlookup函数我用得挺多,基本可以这么说,在考虑怎么得出索引数据的时候,基本上我都会首先想到那个,而不是经典的那些组合,虽然实际上在某些情况下,他们得到能得到一样的结果,经典函数加上超级表的结构语言依然能得出很简便的索引公式。 Microsoft 365故障的那一天,因为电脑自动被退回到了Office 2016家庭版,然后我就见识到了自己的xlookup函数全部崩溃的那个画面。于是第二天我就把那些Excel表格公式全部改成了lookup函数,实际上也没有多大的改动,因为那不就是个多条件索引而已。 lookup函数Office 2016肯定是支持的,但是xlookup函数好像要到Office 2021才算是全体支持,至于升级到后期版本的2019是否支持,这个我还得进一步找一下资料。

为什么要高级版本的office呢?因为高级版本的office支持的Excel函数更多了,但是是否最高级的版本就最好呢?未必,因为据说Office 2024有不少bug。

综上所述,所以我把目标买断office版本初定为Office 2021proplus。以防万一,我也要把自己经常使用的那些Excel表格里面太高端的公式全部低端化,也不一定要低端到Office 2016也能支持,但如果真的能做到那样的话就更好了。

2024-08
7

xlookup+超级表实现动态引用

By xrspook @ 11:38:23 归类于: 烂日记

谈Excel,索引肯定是离不开的话题。从经典的lookup到用得很多的vlookup,到index+match,再到vlookup的升级版xlookup,所有的这些都是为了让搜索更方便。xlookup相对vlookup来说的确已经进步了不少,但无论是这些搜索的函数也好,其它按条件汇总的函数也好,总是有一些支持选择列,有一些不支持。之所以有支持和不支持之分,其中一个很重要的原因是支持选择列对写公式的那个人来说很方便,但关键是选择列可能严重影响搜索的性能。感觉上明明很简单的东西却要加载很长一段时间才能出结果,那个加载时间,甚至让你觉得是不可接受的慢,所以在使用这些索引函数的时候,绝大多数的教程都会提醒你数据源得用绝对引用。引用一个确切的范围,即便你把那个范围搞得很宽也行,但是引用一些空白行,又会导致一些意想不到的事情发生,尤其是对某些经典函数来说就会出错。当然,出现这种问题可能是因为我道行不够,如果是高手操作,什么问题都不是问题。

为什么搜索出来的结果可以动态显示,可以显示多行,但是被搜索的内容必须得用绝对引用呢?为什么教程里除了整列选择就没有一些动态确定索引范围的方式呢?隐隐之中我觉得新出现的公式应该可以做到,因为新出的那些高级函数出来的结果都是很动态的。虽然实际上近几年我已经很少关注学习那些新出的东西了,但是我还是有那么一点印象的。

在超级表里面使用公式,引用的单元格不再是经典的单元格名字,而是超级表的列名,前提是你用的那种公式不涉及跨行,如果跨行了,我好像没发现超级表能有什么超级功能,但是如果用超级表的偏移定位函数,的确能实现到达上下行。

xlookup是个比较新的函数,所以它能不能把索引的范围定为超级表的某一列呢?我发现的确是可以这么干的。如果有两个超级表,我要用超级表A作为索引,超级表B的某些数据作为查询条件。那么我在写xlookup公式的时候,我就可以完全用超级表的快捷引用方式。暂时我只尝试过一些比较简单的数据,出来的效果非常好,比我整列引用速度快很多。虽然xlookup是支持整列引用的,但那样的话很慢,而之所以很慢,我估计一个很重要的因素是xlookup只在高级的Excel里面使用,而高级的Excel文件又比低级的Excel文件行数多很多。其实我一直搞不懂为什么同样是Excel的公式,有些函数可以整列引用,有些却不行。有些虽然可以整列引用,但实际上效率不高。用同样的公式,一个引用的是超级表,一个引用的是整列,同样是xlookup,出来的结果就很有差别。如果你在超级表B更新了数据要索引超级表A的内容。引用整列的那个在你把数据粘贴到超级表B的时候,就已经会把你卡得痛不欲生。也正是因为有这种痛不欲生,所以以前当我要引用很多数据的时候,我选择的是用Power Query做一个后台匹配。因为如果用前台做这种整列的索引,整个文件哪怕不是互相影响的那些表,也会变得奇慢无比。在这里我巧妙的地方是利用了超级表的动态性。以前,如果要动态应用可能会增减数据表格内容的时候,好像需要套用offset。

当我要指定某片数据区域的时候,Excel其实是能感知其连片区域范围的,但只是在用公式索引的时候没有给用户一个直截了当的方案而已。

© 2004 - 2026 我的天 | Theme by xrspook | Power by WordPress