前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA编程练习04. 在多个单元格区域查找多个数

VBA编程练习04. 在多个单元格区域查找多个数

作者头像
fanjy
发布2019-07-23 17:24:25
1.5K0
发布2019-07-23 17:24:25
举报
文章被收录于专栏:完美Excel完美Excel

学习Excel技术,关注微信公众号:

excelperfect

本次练习题

如下图1所示的工作表,在单元格区域A2:F2中放置的是要查找的数值;在列H至列BF、行9至行30是被查找的区域,这个区域分17个小区域,每个区域3列,其单元格中要么为空,要么放置着一些数值。

图1

现在,要在这17个小区域中查找单元格区域A2:F2中的值并将找到的数值的个数输入到其下方第32行的单元格中。如何使用VBA代码实现?

VBA代码

先给出代码,再细细解释。代码如下:

Sub VBAEx04()

Dim rng(17) As Range

Dim i As Integer, j As Integer

Dim iCount As Integer

For i = 0 To 16

Set rng(i) =Range("H10").Offset(, i * 3).Resize(22, 3)

Next i

For i = 0 To 16

iCount = 0

For j = 1 To 6

iCount = iCount +WorksheetFunction.CountIf(rng(i), Cells(2, j))

Next j

Cells(32, 9 + i * 3).Value = iCount

Next i

End Sub

问题表面上看起来很复杂,但代码却并不多。

其中,代码:

For i = 0 To 16

Set rng(i) =Range("H10").Offset(, i * 3).Resize(22, 3)

Next i

将17个小区域赋值给变量rng(i)。因为每3列一个小区域,所以很容易找到规律。以第1个小区域左上角为基点,每次循环向右偏移3的倍数列,移到每个小区域的左上角,然后将区域扩展到22行3列,即得到每个小区域。

代码:

WorksheetFunction.CountIf(rng(i),Cells(2, j))

使用工作表函数COUNTIF函数来统计单元格区域中指定值的数量。Cells(2,j)分别查找A2至F2中的数值,将找到的数值的个数累加到变量iCount中。最后得到每个小区域中包含的数值的个数,然后将得到的个数值输入到第32行中相应单元格中。

代码中的外层循环遍历每个小区域,内层循环遍历A2:F2中的值。

小结

1.不要被工作表的表面所迷惑,要从中找到规律。

2.有时候,灵活使用工作表函数不失为一个好技巧。

下面是代码的图片版:

你有更好的代码吗?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档