之前整理报表的时候卡了好久,到处翻帖子找excel怎么自定义公式,网上好多说法混在一起,一会说插入函数,一会说写宏,试了半天都不对,差点直接放弃,改用计算器一点点算。

一开始想的很简单,就是要一个固定的计算逻辑,每次输同样一串表达式太麻烦,容易输错括号和单元格引用,想弄成一个短名字,直接在单元格里调用。最先跑去点公式栏旁边的fx插入函数,翻遍内置函数列表,才反应过来这里只能选自带的,没法往里塞自己写的一套计算式子,白忙活半天。

然后误打误撞点开名称管理器,就是公式选项卡里面那个,当时还以为这个只是用来给单元格区域起名。随手新建一个名称,名称框里敲了自己想好的简称,引用位置那里,直接粘贴写好的计算公式,不用选中固定单元格,参数用临时的占位标记。保存之后回到表格单元格,直接输入这个名字,它居然能算出结果。

这里有个很麻烦的点,就是这种靠名称管理器做出来的自定义公式,灵活性很差。不能像普通函数那样随便拖动填充,换一行数据的时候,它不会自动跟着偏移单元格,所有引用都是固定死的。当时我批量处理几十行数据,拖完填充柄,结果全部一模一样,盯着屏幕愣了好一会,才想明白这个局限。

这只是我的个人感受,不是标准答案。我就只试过名称管理器这个路子,VBA自定义函数那一块我没碰,代码部分看着头大,不确定好不好上手。

后来才反应过来,想要可以拖动、自动变更引用的自定义公式,就得用VBA模块写函数,只是那个要启用宏,文件存成启用宏的格式,发给别人的时候,对方那边宏没开,公式直接罢工。我对接的同事大多不爱开宏,权衡之后,最后还是继续用名称管理器的版本,每次算一行手动改一下里面的单元格,慢归慢,至少不会出现打开文件直接报错的情况。

还有一次踩的小坑,名称不能和内置函数重名,也不能带空格、特殊符号,当时图省事起了个和求和相关的名字,保存的时候一直弹报错,来回改了三四次,换成简单的字母组合才保存成功。引用位置里面的等号不能漏掉,少写一个等号,它就单纯当成一段文本存着,调用的时候不会计算数值。

文件复制到别的电脑上,这个自定义的名称不会跟着消失吗。

我上次把表格拷去别的机器测试,名称是跟着文件走的,打开之后还能正常调用,前提是计算逻辑里面引用的单元格位置没有改动。要是表格结构调整,插入或者删除行列,里面的引用位置就会跑偏,算出来的数字直接乱掉,这个隐患一直都在,每次调整表格结构之后,都要单独核对一遍结果。

现在我也没有固定死只用一种方式,简单不变的计算逻辑就丢名称管理器里,偶尔用一下。遇到需要大批量下拉填充的,干脆老老实实把完整公式写在单元格里,不再折腾自定义。不是说这个方法不行,只是它适配的场景很窄,很多时候省下来输入公式的时间,最后都花在核对结果上面了。

那天下班关表格的时候,还在想,如果当初肯静下心学一点VBA,会不会不用卡在这种不上不下的状态。