与名称共存亡的宏表函数
昨天提到宏表函数,不过好多粉丝都是第一次接触,一头雾水。今天,卢子来一个全面说明。
宏表函数是个“老古董”,实际上是现在广泛使用VBA的“前身”。虽然后来的各版本已经不再使用它,但还能支持。宏表函数很奇葩,必须定义名称才能使用,脱离了名称就没有存在的价值。
1.是一份出差伙食补贴费明细。伙食补贴费都是用表达式显示在单元格,现在要合计下费用,该如何做?
Step 01选择E2单元格,单击“公式”选项卡中的“定义名称”按钮,在“名称”文本框中输入:合计,“引用位置”输入下面的公式,最后单击“确定”按钮。
=EVALUATE(D2)
Step 02 定义完名称后,只需在E2单元格输入公式,并向下填充公式,即可自动统计表达式。
=合计
2.有些人喜欢将需要统计的数据用背景色填充,以为这样比较醒目,统计起来就方便。当然前提是你用计算器统计,如果用Excel那就是自找麻烦。
现在对需要统计的津贴用不同背景色填充,要分别统计两种颜色的津贴总数。
Step 01 选择C2单元格,单击“公式”选项卡中的“定义名称”按钮,在“名称”文本框中输入:颜色,“引用位置”输入下面的公式,最后单击“确定”按钮。
=GET.CELL(63,B2)
Step 02 定义完名称后,只需在C2单元格输入公式,并向下填充公式,即可自动统计表达式,有背景色的就大于0,没有背景色的就是0。
橙色的背景色为46,所以公式可设置为:
=SUMIF(C:C,46,B:B)
绿色的背景色为10,所以公式可设置为:
=SUMIF(C:C,10,B:B)
如果背景色多的话,需要再次定义一个名称作为辅助列,获取D列的颜色对应值。
除了背景色,常用的还有一个字体颜色,参数1为24代表字体颜色。
=GET.CELL(24,B2)
GET.CELL参数1可以设置成1-66,共66种,有兴趣的可以去测试。
知识扩展:
高版本的Excel可以按背景色进行筛选,再借助SUBTOTAL函数就可以按背景色筛选求和。
在C17输入公式:
=SUBTOTAL(9,B2:B16)
筛选橙色的背景色,就可以统计出来。不过这种有一个局限性就是只能按筛选的颜色进行统计,不能分别统计各种颜色。
3.除了这两个宏表函数,还有一个比较常用就是GET.WORKBOOK函数,可以利用这个函数创建目录。
Step 01 新建一张表格,工作表名称改成目录。单击“公式”选项卡中的“定义名称”按钮,在“名称”文本框中输入:目录,“引用位置”输入下面的公式,最后单击“确定”按钮。
=GET.WORKBOOK(1)
知识扩展:
直接用=GET.WORKBOOK(1)虽然可以获取目录,但当工作表更改时不能自动更新,这样略有缺陷。这时可以做一个改进,在后面用&T(NOW()),NOW函数是随时更新的,T(NOW())就是代表随时更新的空文本,最终公式为:
=GET.WORKBOOK(1)&T(NOW())
T函数的作用就是将数字变成空文本,而文本保持不变。说到T函数就必须说一下N函数,N函数的作用就是将文本转换成0,而数字保持不变。
N函数有一个经典案例,就是获取累计金额,比SUM函数看起来还简单。
Step 02 在A1输入下面的公式,并向下复制填充公式,得到包含工作簿名称的目录。
=INDEX(目录,ROW(A1))
超出部分显示#REF!这种错误,显然不美观,公式稍作改动,让错误值显示空。
=IFERROR(INDEX(目录,ROW(A1)),"")
Step 03 去掉工作薄名称,在B1输入下面的公式,并向下复制填充公式。
=IF(A1="","",MID(A1,FIND("]",A1)+1,99))
利用FIND函数获取“] ”的位置+1位,也就是工作表名的起始位置,MID函数从工作表名的起始位置提取99位。99是一个比较大的字符,就是保证能够比工作表名的长度还长,这样可以获取整个工作表名。
现在目录出来了,如果再进行超级链接就更完美,以后只需单击工作表名称就可以链接到相应的表格。
Step 04 在C1输入下面的公式,并向下复制填充公式,并隐藏A列,字体稍微调整下。
=IF(B1="","",HYPERLINK("#"&B1&"!A1",">>>单击打开<<<"))
用多条公式看起来比较明朗而已,如果水平好只需两步就可以做到,首先定义一个叫“目录”的名称,INDEX函数放在名称中为了后期缩短字符用。
=INDEX(GET.WORKBOOK(1),ROW(D1))&T(NOW())
定义名称后在E1输入公式,并向下复制。
=IFERROR(HYPERLINK(目录&"!A1",MID(目录,FIND("]",目录)+1,99)),"")
这个GET.WORKBOOK函数有38种用法,只需将1改成2-38任意一种即可,有兴趣的朋友可以逐一测试,看得到什么内容?
最后强调一点,宏表函数的后缀跟普通表格不一样,需要将表格保存另存为:Excel 启用宏的工作簿(*.xlsm)。
同时需要在“开发工具”中将宏的安全性设置为启用所有宏,否则宏表函数不能使用。
宏表函数本质也是函数,只是多了一步定义名称而已,别把它想得太复杂。其实普通函数也可以通过定义名称,让公式更容易解读。
推荐:都有了,你要的Excel一级、二级、三级下拉菜单制作教程都有了!
关于宏表函数还有什么疑问?
作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)