VBA创建双列数据透视表宏中For Col=1 To 6 Step 5语句解析
For Col = 1 To 6 Step 5 '2 columns 运行逻辑说明 基础语法前提
VBA的For循环遵循以下执行规则:
- 循环启动时给变量赋起始值
- 每次循环执行完后,给变量累加
Step后定义的步长值 - 当变量值超过
To后定义的结束值时,立刻终止循环
该行代码的实际执行流程
这行内层循环固定只会执行2次,没有更多次:
- 第一次进入循环:
Col取初始值1,执行循环内所有透视表生成逻辑 - 第一次循环结束:
Col累加步长5,计算得1+5=6,该值没有超过结束值6,触发第二次循环 - 第二次进入循环:
Col取值为6,执行循环内所有透视表生成逻辑 - 第二次循环结束:
Col再次累加步长5,计算得6+5=11,11大于结束值6,直接退出内层Col循环
这行代码本质是用固定步长的循环,手动指定了两个列坐标1、6,刚好实现一行放两个透视表的双列布局,也就是注释里标注的
2 columns的效果。
选列号1、6的设计原因
结合上下文代码就能看懂列号选择的逻辑:
- 当
Col=1时,透视表从第1列(A列)开始生成,对应代码分支生成当前题目的频数统计透视表 - 当
Col=6时,透视表从第6列(F列)开始生成,对应代码分支生成当前题目的百分比统计透视表 - 两个透视表起始列中间隔了4列(B到E列),刚好给每个透视表留足了展示宽度,不会出现内容重叠挤压的问题
整体布局联动逻辑
搭配外层的两层变量控制,最终实现整齐的双列排布:
- 外层
For i = 1 To 14对应问卷的14道调查题目 - 每跑完一道题对应的2个透视表(A列频数、F列百分比),就执行
Row = Row + 10,把起始行号向下偏移10行,给下一组透视表留足垂直展示空间 - 最终生成总数为
14题 * 每题2个表 = 28个透视表,完全匹配代码设计目标。
内容的提问来源于stack exchange,提问作者Javier
相关产品推荐
相关产品推荐

