目录

Columns对象和Rows对象

单列和单行的表示

多列和多行的表示

Group方法和Ungroup方法

单元格对象的EntireColumn属性和EntireRow属性

单元格区域的Columns属性和Rows属性

Outline对象

示例:


Columns对象和Rows对象

    Columns对象和Rows对象分别表示整列单元格和整行单元格,是一种特殊的单元格区域对象。当这两个对象没有任何指定地址时,分别表示整个工作表的所有列和所有行。

单列和单行的表示

当需要表示单列或单行时,可以使用以下方式表示:

Columns ( ColN)
Rows (RowN)

    其中,CoIN和RowN分别表示列号和行号,为大于0的整数。比如:Columns (5)表示第5列,即E列;Rows (5)表示第5行。

多列和多行的表示

当需要表示多行时,可以使用以下方式表示:

Columns("ColName1:ColName2")
Rows ("RowN1:RowN2")

    其中,CoIName1和CoIName2表示起始列和终止列的列标,即A、B、C等。如E至F列,即为Columns( "E:F”)。RowN1和RowN2表示起始行和终止行的行号,如表示第5至第10行,即为Rows(“5:10”)。
    值得注意的是,利用Columns对象表示多列时,不能使用数字,只能使用用英文字母表示的列标。

Group方法和Ungroup方法

    当需要对某几列或某几行创建组时,可以使用Columns对象和Rows对象的Group方法。Group方法是可以多次使用的,即可以创建多个级别的分组。当需要取消分组时,可以使用Ungroup方法。

单元格对象的EntireColumn属性和EntireRow属性

    除了Columns对象和Rows对象表示整列和整行外,还可以使用Range对象的EntireColumn属性和EntireRow属性表示单元格所在的整列和整行。比如本例表示E:F列,可以使用以下任意表达式表示:

Range ( "E1 : F1" ).EntireColumn
Range ( Cells (1, 5) , Cells (1, 6)). EntireColumn

    由于使用Columns对象表示多列时无法实现用数字,而通过Range对象的EntireColumn属性则使得程序更灵活,可以方便开发者对其使用数字进行循环,从而使得批量操作成为可能。如从第5列开始每隔3列将相邻两列进行组合,因而使用EntireColumn可以进行以下循环:

Dim ColN As integer
For ColN = 5 T0 15 Step 3Range (Cells (1,  ColN) ,  Cells (1,  ColN + 1)).Group
Next

单元格区域的Columns属性和Rows属性

    单元格区域(Range)对象有两个属性Columns和Rows,它们所表示的是该单元格区域的整列和整行,如图所示。如以下表达式表示的是该区域的第2列,即C4:C10。

Range("B4:D10").Columns(2)

Excel 2010 VBA 入门 032  将列进行分组-编程知识网

    如需要表示某个区域的多列时,比如B4:D10的第1和第2列,即B4:C10区域,可以采用以下表达式:

Range("B4:D10").Columns("A:B")

    当使用该种表达式表达多列时,VBA程序将会以B4: D10区域的第1列作为A列而重新给该区域的各列定义,也即是一个相对的位置表示。如图所示,该区域的第1列作为A列,该区域的第2列作为B列,如要表示该区域的第1和第2列,则为Columns(”B:C”)。

Excel 2010 VBA 入门 032  将列进行分组-编程知识网

Outline对象

  •     Outline是工作表(Worksheet)对象的一个属性,同样也是一个对象。用它的3个重要属性可以对创建分组的格式进行设置。
  •     SummaryRow属性表示创建行分组时汇总行的位置,可以为xISummaryAbove或者xISummaryBelow,分别表示汇总行在明细数据上方或下方。
  •     SummaryColumn属性表示创建列分组时汇总列的位置,可以为xISummaryLeft或者xISummaryRignt,分别表示汇总列在明细数据左方或右方。
  •     AutomaticStyles属性表示分级显示使用自动样式,可以为True或False。

  这三个属性分别对应了分级显示设置中的三个选项,如图所示。

Excel 2010 VBA 入门 032  将列进行分组-编程知识网

示例:

如图所示,如何使用VBA将每月的工资明细按每3个月进行快速分组?

Excel 2010 VBA 入门 032  将列进行分组-编程知识网

员工编号 姓名 部门 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
0006 程建华 财务部 2875 2875 2875 2875 2875 2875 2875 2875 2875 2875 2875 2875
0009 李国敏 财务部 3050 3050 3050 3050 3050 3050 3050 3050 3050 3050 3050 3050
0016 袁志刚 财务部 3523 3523 3523 3523 3523 3523 3523 3523 3523 3523 3523 3523
0017 周汉林 管理部 2890 2890 2890 2890 2890 2890 2890 2890 2890 2890 2890 2890
0018 骈永富 管理部 2850 2850 2850 2850 2850 2850 2850 2850 2850 2850 2850 2850
0020 孙玉梅 管理部 2580 2580 2580 2580 2580 2580 2580 2580 2580 2580 2580 2580
0023 陈亚菁 管理部 3460 3460 3460 3460 3460 3460 3460 3460 3460 3460 3460 3460
0026 康小芸 管理部 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800
0028 刘晨 管理部 5318 5318 5318 5318 5318 5318 5318 5318 5318 5318 5318 5318
0042 齐光 管理部 5425 5425 5425 5425 5425 5425 5425 5425 5425 5425 5425 5425
0052 于健惠 管理部 4320 4320 4320 4320 4320 4320 4320 4320 4320 4320 4320 4320
0060 王文群 管理部 1875 1875 1875 1875 1875 1875 1875 1875 1875 1875 1875 1875
0066 曾国安 管理部 4726 4726 4726 4726 4726 4726 4726 4726 4726 4726 4726 4726
0072 刘志峰 管理部 1850 1850 1850 1850 1850 1850 1850 1850 1850 1850 1850 1850
0080 刘玉录 管理部 1385 1385 1385 1385 1385 1385 1385 1385 1385 1385 1385 1385
0114 俞卫广 管理部 6700 6700 6700 6700 6700 6700 6700 6700 6700 6700 6700 6700
0125 杨建军 人事部 2700 2700 2700 2700 2700 2700 2700 2700 2700 2700 2700 2700
0209 曲波 人事部 3215 3215 3215 3215 3215 3215 3215 3215 3215 3215 3215 3215
0215 林革壮 市场部 1565 1565 1565 1565 1565 1565 1565 1565 1565 1565 1565 1565
0233 李卫卿 市场部 6213 6213 6213 6213 6213 6213 6213 6213 6213 6213 6213 6213
0247 申玲 市场部 1230 1230 1230 1230 1230 1230 1230 1230 1230 1230 1230 1230
0260 孙正发 市场部 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950
0265 毛传阳 销售部 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500
0288 张元端 销售部 2465 2465 2465 2465 2465 2465 2465 2465 2465 2465 2465 2465
0293 朱凌波 销售部 3420 3420 3420 3420 3420 3420 3420 3420 3420 3420 3420 3420
0314 张宏 销售部 2310 2310 2310 2310 2310 2310 2310 2310 2310 2310 2310 2310
0327 郦锡文 销售部 1912 1912 1912 1912 1912 1912 1912 1912 1912 1912 1912 1912
0328 张占斌 销售部 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800 1800
0334 曹阳 销售部 2632 2632 2632 2632 2632 2632 2632 2632 2632 2632 2632 2632
0352 周书敬 销售部 4200 4200 4200 4200 4200 4200 4200 4200 4200 4200 4200 4200
0370 姚胜 销售部 5300 5300 5300 5300 5300 5300 5300 5300 5300 5300 5300 5300
0371 郭建 销售部 1571 1571 1571 1571 1571 1571 1571 1571 1571 1571 1571 1571
0374 高波 销售部 6200 6200 6200 6200 6200 6200 6200 6200 6200 6200 6200 6200
0377 卢卫 总经办 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200 3200
0391 赵秀池 总经办 2450 2450 2450 2450 2450 2450 2450 2450 2450 2450 2450 2450
Sub 分组()Columns("E:F").GroupColumns("H:I").GroupColumns("K:L").GroupColumns("N:O").Group
End Sub