第一章 入门篇
1.22 union与intersect
union与intersect就是单元格区域的并集与交集。
有时候我们需要处理的单元格,都在不同的区域,但我们需要对它们进行相同的操作,这个时候可以用Union把它们连接起来成为一个区域,从而实现对多个非连续区域一起进行操作。它的语法是这样的:
union(区域1,区域2,区域3......)
union语句最多可以对30个区域进行连接。
intersect则返回单元格区域的交集,它的语法是这样的:
intersect(区域1,区域2,区域3......)
例句:
union(Cells(2, 1), Cells(4, 1), Cells(6, 1), Cells(8, 1))
'把Cells(2, 1)、Cells(4, 1)、 Cells(6, 1)和Cells(8, 1)四个单元格合并成一个区域,也就是下图中蓝色的部分。
intersect(Range("d4:j12"), Range("f1:h16"))
'获得Range("d4:j12")和Range("f1:h16")两个区域的交集,也就是下图中涂绿色的部分。
小程序:
把下表中资产名称为"音响设备"的整行信息连同表头,拷贝到[k1]开头的单元格区域,填充颜色变为红色,并统计它们的原值合计数和平均值:
卡片号 |
资产名称 |
建卡 |
原值 |
净值 |
00007933 |
空调 |
2007-12-31 |
498720.00 |
14961.60 |
00007934 |
台式电脑 |
2007-12-31 |
35670.00 |
1070.10 |
00012189 |
音响设备 |
2007-12-31 |
12420.00 |
372.60 |
00014439 |
音响设备 |
2008-06-11 |
6800.00 |
204.00 |
00014437 |
音响设备 |
2008-06-11 |
6800.00 |
204.00 |
00014436 |
音响设备 |
2008-06-11 |
6800.00 |
204.00 |
00032579 |
台式微机 |
2010-12-29 |
6100.00 |
183.00 |
00032578 |
台式微机 |
2010-12-29 |
6100.00 |
183.00 |
00034441 |
电视机 |
2011-07-07 |
15600.00 |
468.00 |
00047157 |
空调 |
2012-09-11 |
5700.00 |
171.00 |
00047156 |
空调 |
2012-09-11 |
5700.00 |
171.00 |
00049661 |
监控设备 |
2012-12-05 |
8000.00 |
240.00 |
00049664 |
金库门 |
2012-12-05 |
76000.00 |
2280.00 |
00059257 |
笔记本式微机 |
2012-12-30 |
5700.00 |
171.00 |
00060654 |
监控设备 |
2012-12-30 |
24250.00 |
727.50 |
Sub union与intersect()
Dim ss As Range, i%, a&, b&
Set ss = [b1].offset(0, -1).resize(1, 5)
'先把表头赋值给ss变量
For i = 2 To 16
If Cells(i, 2).Value = "音响设备" Then
Set ss = union(ss, Cells(i, 2).offset(0, -1).resize(1, 5))
'把每一个符合条件的单元格,先左移一列,然后扩展到整行,再用union语句把ss变量与新行连接成一个区域。
End If
Next
ss.Copy [k1]
ss.Interior.ColorIndex = 3
' 对区域执行拷贝和涂红操作。
a = Application.Sum(intersect(ss, Range("d:d")))
b = Application.Average(intersect(ss, Range("d:d")))
'对区域和原值列(d列)的交集执行求和与求平均值操作。
MsgBox "选中设备的原值合计为" & a & "元"
MsgBox "选中设备的原值平均值为" & b & "元"
End Sub
往期精彩回顾:
学习VBA,报表做到飞 第一章 入门篇 1.21 specialcells语句
学习VBA,报表做到飞 第一章 入门篇 1.20 Replace语句
学习VBA,报表做到飞 第一章 入门篇 1.19 FindNext语句
我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!
,