Excel中最常用的依然是公式,虽然VBA非常强大,但是并不是所有人都喜欢写代码,相对于VBA,函数公式的好处就是现成的,可以拿来即用,这也是大家非常喜欢函数的原因。那么VBA是不是可以和函数公式一起使用呢?答案自然是肯定的,不仅仅如何VBA还可以弥补很多公式中的不足,比方说我们今天的场景。
隐藏计算结果中的错值!
场景说明
还是我们上节的场景,这里我们随意的更改一些数据,构造一个计算错值的结果,可以看到已经有了两行数据中出现了错值
这样的错值出现在数据中看起来非常的难看,并不美观,我们不可能在提交给领导的数据表格中出现这样的结果的
如果错值不可避免,那么有没有办法隐藏错值呢?
肯定会有小伙伴说,我可以删除错值
没错,可以删除错值,但是同时你也删除了公式,后面需要的时候,你有需要重新写公式,非常的麻烦,并不是一个高效的办法,今天我们用VBA来让这些错值隐藏,同时不会改变单元格本身的公式。
代码区
Sub tests
Dim rng As Range, a As Range
Set rng = ActiveSheet.UsedRange
For Each a In rng
a.Font.Color = a.Interior.Color
rng.NumberFormatLocal = "[黑色]G/通用格式"
Next
End Sub
看看效果
参考上面的演示,我们可以看到公式计算的错值已经成功被隐藏,但是单元格本身的公式还是存在的,并没有操作公式的删除,如果你修改为正确的数据,单元格本身的公式还是可以计算,返回正确的结果的。
这个代码最终的作用,仅仅是隐藏了错误的结果,并没有修改单元格的公式,这就是VBA真正强大的地方
代码解析
来看看今天的代码,看起来代码非常的简单,如此简单的代码居然可以实现这么神奇的效果外面的框架,我们就不再花时间讲述了,直接进入今天的主体For Each a In rng
a.Font.Color = a.Interior.Color
rng.NumberFormatLocal = "[黑色]G/通用格式"
Next
遍历整个单元格区域
首先第一步
有认真学习过之前单元格颜色的小伙伴一定能够看到代码的,将单元格的字体颜色变成单元格本身的颜色这个代码实现起来有什么效果呢?
不瞎猜,直接上代码
可以看到,当代码执行到这一句的时候,我们看到对应的第一个单元格内容,肉眼已经不可见了,但是单元格本身的内容还是存在的
为什么呢?因为单元格背景色是白色,而我们将字体也设置成了白色,那么肉眼肯定看不到具体的内容了,就是这个效果。换个角度想,不管这个单元格的结果是错值还是正确的结果,经过这句代码的加工,都已经是肉眼不可见了,但是保留单元格本身的内容/公式。
是不是已经有了一点味道了。
错值不可见是我们想要的结果,但是正确的结果也不可见就不是我们想要的结果了,那么如何让正确的结果展现出来呢?
就是下一句代码了。
rng.NumberFormatLocal = "[黑色]G/通用格式"
设置单元格的数字格式,让错误值以外的值显示为黑色
在看看这句代码的效果
我们可以看到通过这句话代码之后,原来不可见的内容有可见。当然是非错值,如果是错值的话,依然还是不可见的。 简简单单的两句代码,就可以实现我们之前不可能实现的效果。
学好VBA,再搭配函数公式,这才是玩转Excel的最佳途径
领取专属 10元无门槛券
私享最新 技术干货