郑州电脑维修 Win7粉丝 网站地图
您的位置:IT服务网办公软件WPS浏览正文

【VBA教材】44.常用语句透析(十八)

2011-11-05 09:54:40 浏览次数:0 评论 0

【VBA教材】44.常用语句透析(十八)这篇文章的内容如下:

VBA处理数据运算时相对于Excel的内置函数的一个优势是在于在For循环可以通过变量进行循环,而函数公式则只能通过辅助区的形式来变相实现变量的功能。当然,更重要的是For循环可以将循环嵌套,这使VBA程序能发挥更大的优势。本节对 For Next循环的嵌套应用进行讲解。

循环也可以像条件语句一样多层嵌套使用,在每一层循环中也可以按需求随时中断循环。本例是双层循环的应用。

假设在工作簿的第一个工作表中有本期10个班的三好学生名单,如图44.1所示。需要将这些名单分置于10个工作表中,每个表以班名进行命名,且将学生姓名纵向存放。

实现以上需求可以使用双层循环完成。代码如下:

___________________________________________

Sub 分班()

Dim 班 As Byte, 学生 As Byte'声明两个变量

'外层循环,遍历所有班级

For 班 = 2 To Cells(Rows.Count, 1).End(xlUp).Row

'添加一个新工作表,且位置在最后面

With Sheets.Add(after:=Sheets(Sheets.Count))

'对新表命名

.Name = Sheets(1).Cells(班, 1)

'里层循环,遍历每个班的三好学生

For 学生 = 2 To Sheets(1).Cells(班, 1).End(xlToRight).Column

'将学生姓名复制到对应的班级中,且纵向存在A列

.Cells(学生 - 1, 1) = Sheets(1).Cells(班, 学生)

Next 学生'执行下一个(学生)

End With

Next 班'执行下一班(班级)

End Sub

___________________________________________

在以上过程中,外层循环的范围是2到10,在A2:A10之间纵向循环。而里层循环的范围则由该班的人数决定,在该表所在行中横向循环。

过程执行后的结果如图44.2所示。

\

图44.1 三好学生名单

\

图44.2 将三好学生分存于10个工作表

如果需要仅仅显示两列,即A列班级、B列学生,那么可以改用以下代码:

___________________________________________

Sub 分班2()

Dim 班 As Byte, 学生 As Byte, n As Integer'声明三个变量

Sheets(2).[a1] = "班级": Sheets(2).[b1] = "三好学生"

'外层循环,遍历所有班级

For 班 = 2 To Cells(Rows.Count, 1).End(xlUp).Row

'里层循环,遍历每个班的三好学生

For 学生 = 2 To Cells(班, 1).End(xlToRight).Column

'将学生姓名复制到对应的班级中,且纵向存在A列

Sheets(2).Cells(班 + n, "A") = Cells(班, 1)'A列存放班级

Sheets(2).Cells(班 + n, "B") = Cells(班, 学生)'B列存放学生姓名

n = n + 1'累加变量,使Sheets(2)工作表中的结果存放区域可以向下递增

Next 学生'执行下一个(学生)

Next 班'执行下一班(班级)

End Sub

___________________________________________

执行以下代码后,将在第二个工作表中产生以下结果:

\

图44.3 将表格转置为两列

分班.et



本文地址:http://www.itfw5.com/office/WPS/10028.html
  • IT服务网,同时还提供提供郑州数据恢复,郑州硬盘数据恢复,郑州内存卡数据恢复;
    请自觉遵守相关政策法规,严禁发布色情/暴力/反动言论。

    相关广告

    WPS推荐文章