Excel VBA 8.39公式错值隐藏不满意 那就直接清空或单独标记
公式错值隐藏不满意 那就直接清空或单独标记
点击上方“Excel和VBA”,选择“置顶公众号”
致力于原创分享Excel的相关知识,源码,源文件打包提供
一起学习,一起进步~~
上一节,也就是Excel VBA 8.38玩转Excel公式 VBA让错值不可见,我们学习了如何利用Excel VBA来隐藏单元的公式,当然并不是所有的都隐藏,仅仅是隐藏错值的公式,这样就可以让数据表看起来更加的美观,也符合领导的要求。
但是有小伙伴们就表示,虽然让公式错值不可见,从数据整体外观上来看,是清新了很多,但是对于后期数据的核查筛选以及汇总来说,依然存在很大的不方便,错值还是错值,还是没有办法参与运算,并且有时候需要单独看看这些错值是哪里错,不可见之后,反而不方便看了。
看来不同的场景对于错值的要求又是不同的,那么我们来看看今天的场景,既然错值会影响数据的计算,那么我们是否可以直接将错值进行批量的替换呢?比方说错值替换为空值?为了计算的方便,那么我们也可以将错值直接替换成为0,这样就可以参与计算了,这样是不是会方便一点呢?
场景说明
这样的操作场景,确实是我们上节没有考虑到的结果,那么我们今天继续来实现这个场景需要
这是我们有修改了一下之后的场景,上面小伙伴反馈的情况确实是有一定的影响的,数据没有办法进行二次计算,虽然错值不可见,但是一些相关的计算还是没有办法计算,那么我们今天来讲这些错值转化成为0,这样就不会影响公式的计算了。
当然我们这里也是要说明一下,并不是说将错值替换是最佳的方法,只是场景的不同,我们需要针对错值进行不同的处理,比方说今天的场景,因为要求涉及到数据的计算,错值无法参与计算,所以我们需要将错值替换为0,换个角度出发,如果哪天我们需要重新进行计算的时候,这些原本被替换的单元格,又需要重新写公式,这个工作量也是很大的,具体哪种方法更好,我们要更根据实际的工作场景来选择
代码区
Sub tests2()
Dim rng As Range, a As Range
Set rng = Application.InputBox("请选择单元格区域", "区域的选择", , , , , , 8)
For Each a In rng
If IsError(a.Value) Then
a.Value = 0
End If
Next
End Sub
看看效果
代码解析
这里错值的修改,我们这里采用的是遍历循环单元格的方式,那么如何判断一个单元格是否是错值呢?
IsError(range.value)
这里需要注意的是,这里range后面跟着是一定是value,不能是text
在很多情况下,range.text和range.value返回的结果都是相同的,都是单元格本身的内容,但是在一些特别的场合下,这两个返回的结果是不同的,比方说今天的案例
针对单元格是否是错值,我们需要用的是range.value
我们可以一起来看看代码
我们可以看到在错值的判断中,这两个返回的结果是不同的,只有value返回的结果才是正确的。所以这一点大家要留意。
找到了错值之后,我们就可以针对单元格内容进行修改了。这个就非常的简单了。