第一章 入门篇

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)四个单元格合并成一个区域,也就是下图中蓝色的部分。

vba编程从入门到进阶教程第14讲(学习VBA报表做到飞)(1)

intersect(Range("d4:j12"), Range("f1:h16"))

'获得Range("d4:j12")和Range("f1:h16")两个区域的交集,也就是下图中涂绿色的部分。

vba编程从入门到进阶教程第14讲(学习VBA报表做到飞)(2)

小程序:

把下表中资产名称为"音响设备"的整行信息连同表头,拷贝到[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语句

我是云飞扬,职场财会人员,愿与大家分享表格制作和数据统计分析的技巧与方法,希望大家的工作更便捷,更轻松!

,