如何重新执行Excel表中的计算公式,这个方法不能错过

NO.1

工作当中,Excel表格不免要做一些公式计算,初始设置计算可能是自动计算,也可以是手动计算,打开文件-选项-公式设置里自已定义,如下图。

为什么要设置自动和手动计算呢?

这个要视实际应用情况而定,有些数据需要实时更新,所以就设置为自动计算,有些数据需要手动来计算来得到最佳效果。

VBA来如何实现这样的操作呢?下面重点介绍一下,实现自动计算方法。

NO.2

自动计算功能,需要用到Range对象的Dirty方法实现。

其使用也很十分简单,只要在Range对象后面加Dirty就可以。

Range.Dirty

Range代表一个Range对象变量,感觉这么说有点迷糊。

看下面例子:

Sub DirtyRange()
Range("A1")="=B1+C1"
Range("B1")=1
Range("C1")=2
dim R as Range
set R=ActiveSheet.Range("A1")
ThisWorkbook.Save'保存工作薄
R.Dirty'重新计算A1单元格内容
End Sub

执行以上过程后,A1单元格内容会自动计算为值3。

NO.3

下面举一个更详细的例子来说明一下Dirty工作方法。

如图所示,本例中将对A、B、C列进行不同的设置,然后再进行重新计算,最后得到如下效果。

开始整个表是没有任何数据的,使用了一个随机生成函数Rnd()对B、C列进行赋值,A列值为B+C列的和。

单击鼠标即可自动生成计算。

NO.4

代码也不多,大多是对表格进行设置和定位处理。

Private Sub CommandButton1_Click()
Range("A3:A15").Select'选择单元格
With Selection
    .Formula = "=B" & .Row & "+C" & .Row'设置A列单元格公式
    .Offset(0, 1).Formula = VBA.Int(10 * VBA.Rnd())'设置B列单元格值
    .Offset(0, 2).Formula = VBA.Rnd()'设置C列单元格值
    .RowHeight = 26'设置行高
    .ColumnWidth = 30'设置列宽
    .HorizontalAlignment = xlCenter'距中
    .VerticalAlignment = xlCenter
    .Interior.Color = RGB(211, 211, 1)'背景色
    .Borders.LineStyle = 1'单线边框
        With .Font'字体设置
            .Size = 18
            .Bold = True
            .Color = RGB(222, 1, 1)
        End With
        With .Offset(0, 1).Resize(13, 2)'设置B、C列格式
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .Interior.Color = RGB(111, 221, 251)
            .Borders.LineStyle = 1
            With .Font
                .Size = 18
                .Bold = True
                .Color = RGB(0, 82, 252)
            End With
        End With
End With
ThisWorkbook.Save'保存工作薄
Application.DisplayAlerts = False'关闭提示
Range("A3:A15").Dirty'自动计算
Application.DisplayAlerts = True
End Sub

整个过程中很重要的一点就是在重新计算之前,要对工作薄进行保存,不然不进行计算,因为在Excel选项设置里的一个预设。

所以要特别注意其工作原理。

NO.5

Dirty作为Range对象一个方法,使用简单,在执行一些公式计算过程是十分好用的功能。

利用这个方法,可以使我们的表格获得更加灵活的数据处理方法。

所以要对些进行一些熟练地掌握。

欢迎关注、收藏