分享

Excel之VBA常用功能应用篇:只隐藏公式的错值而不影响后续的计算

 每天学学Excel 2022-02-15

前景提要

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

遍历整个单元格区域

首先第一步:

a.Font.Color = a.Interior.Color

有认真学习过之前单元格颜色的小伙伴一定能够看到代码的,将单元格的字体颜色变成单元格本身的颜色

这个代码实现起来有什么效果呢?

不瞎猜,直接上代码

可以看到,当代码执行到这一句的时候,我们看到对应的第一个单元格内容,肉眼已经不可见了,但是单元格本身的内容还是存在的

为什么呢?因为单元格背景色是白色,而我们将字体也设置成了白色,那么肉眼肯定看不到具体的内容了,就是这个效果。

换个角度想,不管这个单元格的结果是错值还是正确的结果,经过这句代码的加工,都已经是肉眼不可见了,但是保留单元格本身的内容/公式。

是不是已经有了一点味道了。

错值不可见是我们想要的结果,但是正确的结果也不可见就不是我们想要的结果了,那么如何让正确的结果展现出来呢?

就是下一句代码了。

rng.NumberFormatLocal = "[黑色]G/通用格式"

设置单元格的数字格式,让错误值以外的值显示为黑色

在看看这句代码的效果

我们可以看到通过这句话代码之后,原来不可见的内容有可见。当然是非错值,如果是错值的话,依然还是不可见的。

简简单单的两句代码,就可以实现我们之前不可能实现的效果。

学好VBA,再搭配函数公式,这才是玩转Excel的最佳途径

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多