福利:两个好用的自定义函数(仿textjoin和evaluate)
最近在学习vba,所以更新的频率较少。虽然在学习vba的道路上我现在还是一个没有入门的小白,但多少还是有点收获的。发现了两个有用的自定义函数,可以实现textjoin和evaluate的效果。
textjoin这个函数不用说了,功能是很强大的,很多时候都会用到它,但低版本的微软excel可能没有这个函数,是一个遗憾。我知道在wps2019中有这个函数,用过的人肯定知道它的强大。
如果你平常工作用的是微软excel,而里面又没有textjoin,你就知道有多么痛苦了。我自己的电脑中装的是2019版的excel,自带textjoin,而且我也很喜欢用这个函数。用习惯了后,我也经常在公司的2016版excel中输入textjoin,但输入完我才发现没有这个函数。瞬间感到无力,失落。不过发现了自定义函数能实现它的功能后,就感觉很爽了。
而evaluate这个函数功能也很强大,有时候会有一些妙用。但在微软excel中是个宏表函数,要在定义名称里才能使用,所以被很多人放弃或遗忘。而在wps2019中,它就能直接输入使用。现在有了能代替它的功能的自定义函数后,就能方便地利用它的功能了。
下面就来说说这两个自定义函数,我把它们分别命名为MYTEXTJOIN和MYEVALUATE。
-01-
MYTEXTJOIN
1.将相同部门的员工合并在一个单元格中
如下图所示,左表是原表,实现的效果为右表。这个问题之前讲textjoin时就说过,你如果对这个函数不熟悉或者没有这个函数的话,可以先搜索之前的文章看看它的用法,等安装完自定义函数,就可以动手试验了。现在用自定义函数写的公式和textjoin是差不多的,在E3单元格输入公式=MYTEXTJOIN("、",1,IF(A$3:A$11=D3,B$3:B$11,"")),按ctrl+shift+enter。
下面看下演示,当我输入textj时,下面有textjoin和mytextjoin两个函数。textjoin是excel自带的,mytextjoin是我自定义的。总体来说和textjoin的功能差不多,但一些细节没有textjoin完善。
自定义函数mytextjoin的功能和textjoin比还是有所欠缺的。第一,mytextjoin不能省略参数;第二,mytextjoin的第3参数和后面的参数只能是单元格引用或者数组,不能是单个数字或文本。
虽然mytextjoin有所欠缺,但在工作中不影响使用。第一,把参数输入完整,不要省略就可以了;第二,工作中第3参数一般都是使用数组的,基本不会像我上面那样写1,2,3,4。
-02-
MYEVALUATE
1.求算式的结果
如下图所示,A列是一些算式,求它们的结果。如果用自定义函数myevaluate,直接在C15单元格输入公式=MYEVALUATE(A15),下拉完成。如果要用excel自带的evaluate,就要用到定义名称。
下面演示一下,可以看到要把写好的evaluate公式放到定义名称中才能生效,否则在单元格输入是不支持的。每次都要定义名称挺麻烦的,而且还要考虑相对引用的问题。而用自定义函数myevaluate就没有这个问题,直接在单元格输入函数。
2.求每个单元格的数字之和
在B22单元格输入公式=SUM(MYEVALUATE("{"&A22&"}")),下拉完成。myevaluate和evaluate的功能一样,而且比evaluate更方便,如果你对evaluate了解的话,这个公式就不难理解。
简单说一下它在这里的功能,evaluate可以计算文本算式的结果,如例1;还可以将文本的数组转为常规的数组,比如将"{1,2,3,4}"转为{1,2,3,4}。由于此例每个单元格都是逗号或分号分隔,左右连接花括号就变成文本型的数组,然后用myevaluate转为常规数组,最后用sum求和。
-03-
自定义函数的安装
说了这么多,那么这两个自定义函数从哪来?怎么安装?现在被我保存在一个文件中,就是下面红框标记的那个文件,我会上传到百度网盘中。
第1步,你先从网盘上把这个文件下载下来,保存到电脑里。
第2步,打开微软excel,点开发工具,点excel加载项,弹出加载项对话框,可以看到我的自定义函数已经有了,因为我之前已经加载过了,你第一次点开的话可能是没有的。要点浏览,然后找到你保存的那个文件,点确定。这下你的加载项应该就有了那个文件,勾选好后,点确定。
第3步,要关闭excel,重新打开或者新建一个工作簿自定义函数才会生效。输入=my,看看这两个函数有没有出现。如果安装不成功,可以留言。
链接:
https://pan.baidu.com/s/14PTHuNstxhpSe6BUGvcOCA
提取码:20h0