玖叶教程网

前端编程开发入门

利用VBA,在EXCEL表格中实现选择区域的自动计算

今日和大家分享一个VBA的小实例,也是在工作中会用到的。什么例子呢?我们在使用EXCEL时,一旦选择了几个单元格就会在下面直接读出和是多少,这个功能十分的方便。那么这个功能能否做到随心所欲呢?比如求和,比如计算选择单元格的个数,比如计算所选单元格的负值是多少,比如计算所选单元格的数值大于10的是多少,比如计算所选单元格是数值的为多少,等等,该如何实现这个功能呢?今天我们就利用VBA采用FOR EACH循环来实现我们的需求。

当然,在实际的工作中有很多的情况,比如要在报表中直接知道有多少出勤人数,产量高过平均值的有多少人,我们无法一一的给出代码,就以最常见的选择区域求和来做一个示范吧。

下面的代码实现了选择区域自动求和和选择单元格个数的自动计算功能:

Sub huizong()

Dim d

Dim t As Long

Dim k As Long

Sheets("sheet1").Select

k = 0

For Each d In Selection

k = k + 1

If IsNumeric(d.Value) Then

t = t + d.Value

End If

Next

MsgBox "所选区域数值之和为:" & t & ",所选区域单元格共:" & k & "个"

End Sub

代码截图:

代码的解释:

1 Sheets("sheet1").Select,说明这个功能是在SHEET1的工作表中来实现的。

2 Dim d 定义d这个变量时可变的,没有给他具体的变量名称,读者可以自己查查我之前的文章,可以看到此时计算机分配给这个变量的具体内存是多大

3 For Each d In Selection 用的是FOR EACH的循环语句,遍历的元素是SELECTION中的各个元素,这个元素用d表示

4 k = k + 1 用K来表示SELECTION中的单元格的个数,有一个就加上1

5 IsNumeric(d.Value) 是判断单元格是否是数字。这时用到IS函数,有兴趣的朋友可以去查我之前的文章,对于是否是数字的判断,在VBA和EXCEL中是不用的函数,要切记。

6 t = t + d.Value 如果是数字就累加求和

7 MsgBox "所选区域数值之和为:" & t & ",所选区域单元格共:" & k & "个" 遍历完成所有元素后弹出对话框,给出结果,关于MSGBOX函数还不清楚的朋友赶快再复习一遍。

下面我们看看代码的运行结果:

我们选择了上述的9个区域,数字为1,3,5,7,9,9,9,9 看下面程序的运行结果:

完全正确。这就实现了我们的预期。

当然,我上面的代码只是实现了众多的问题中的一个,如果是求其他的问题只是将代码略加改动即可,如,求选择区域大于10的,只要改成:d.value>10,在做相应的计数即可。

今日内容回向:

1 为了实现选择区域的自动计算,需要哪些函数?

2 为了实现选择区域的自动计算,需要用到哪个循环语句?

3 如何实现选择区域的自动求出不是数字的单元格个数?

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言