首页 在Excel中使用VBA生成树状表格

在Excel中使用VBA生成树状表格

举报
开通vip

在Excel中使用VBA生成树状表格在Excel中使用VBA生成树状表格 2012-07-19################2012-07-19#######2#012-07-19######## 在Excel中使用VBA生成树状表格 李心玉, 葛 莹 (河海大学土木工程学院, 江苏 南京 210098) 介绍了利用 VBA 在 Excel 中编写“宏”, 生成树状表格的方法。借助于该方法可以提高制作表格的效率。 摘 要: VBA Excel; 树状表格; 控件; 插入; 合并 关键词: ( 见图 根据这一特点, 我们可以从作为根结点的单元格 ...

在Excel中使用VBA生成树状表格
在Excel中使用VBA生成树状 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 格 2012-07-19################2012-07-19#######2#012-07-19######## 在Excel中使用VBA生成树状表格 李心玉, 葛 莹 (河海大学土木 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 学院, 江苏 南京 210098) 介绍了利用 VBA 在 Excel 中编写“宏”, 生成树状表格的方法。借助于该方法可以提高制作表格的效率。 摘 要: VBA Excel; 树状表格; 控件; 插入; 合并 关键词: ( 见图 根据这一特点, 我们可以从作为根结点的单元格 A3 引言0 ?) 开 始 , 生 成 最 简 单 的 树 状 表 格( 见 图 3?) , 其 中 A 为 父 结 在实际应用中, ( 表式 和表式 我们经常会用到形如图 1 1 点, B 、C 、D 为子结点。从表格的形式来看, B 、C 、D 分别占一个 ) 所示的表格形式。因为这种类型的表格可以被抽象为一种树 2单元格, 则 A 由原先的一个单元格生成为占 3 个单元格的合并 [1]状结构, 所以也称为树状表格。这种树状形式的表格应用范围 单元格, 此时数字 3 正好是父结点 A 的分支度。然后再分别从 很 广 , 它 可 以 是 整 个 表 格 , 也 可 以 是 表 格 中 的 某 些 部 分( 如 表 B 、C 、D 结点开始, 分别生成以 B 、C 、D 为父结点的树状表格( 见 头) 。目前, 使用 M icrosoft O ffice 中的 Excel可以直接手工绘制 图 3?) 。B 、C 、D 由原先的一个单元格生成为分别占 2、2、2 个 树状表格, 但其操作过程复杂, 效率低, 缺少灵活性; 特别是对 于表格的层次和形状都没 有确定的情况, 手工直接绘制的 方 2 也分别是结点 B 、C 、D 的单元格的合并单元格, 而此时数字 式, 就会很不方便。 分支度; 同时 也随之生成为占 个单元格的合并单元格。如 A 6 Excel作为大多数用户所青睐的表格处理软件, 其强大优 此反复, 逐层生成, 最终就可以生成所需的树状表格。 势还在于它提供了宏语言 V isual B asic for A pplication(V B A )。 V B A 是新一代 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 宏语言, 是基于 V isual B asic for W indow s 发展而来的, 两者有着相似的语言结构, 严格地说, V B A 是 V B 的子集。通过 V B A 进行编程, 可以提高 Excel的效率和增加新 的功能。 图 3 本文结合笔者在实际编程过程中所写的一个应用程序, 介 绍使用 Excel V B A 语言生成树状表格的方法。这种方法能够 实际上, 由一个父结点生成其子结点的过程可以看作是一 提高表格生成的效率和灵活性。( 这里只介绍生成表式 1 的表 个独立的过程, 所以整个树状表格的生成过程也就是这个过程 格形式, 要生成表式 2 的表格形式, 只要把程序中对应的行列 的重复进行。 坐标变化一下即可。) 此过程需要解决的问题主要有两个: 一是如何控制父结点 生成相应数量的子结点; 二是如何确保父结点的合并单元格所 占的单元格数始终与叶结点的数量相同。 Excel中, 在合并单元格的范围内, 在相应的位置插入或删 实现过程1 除任意的行数或列数, 合并单元格所占的单元格数也会随之增 实现思路1.1 加或减少。同时, Excel V B A 是一种采用“对象?属性”、“对下面以图 1 中表式 1 为例, 来描述生成树状表格的具体实 象? 方法”的语法结构的面向对象程序语言。 现思路。为了便于说明, 给表式 1 的树状表格中的单元格赋予 笔者根据这些特点, 采用插入列然后合并单元格的方法来 相应的字母符号( 见图 2) 。根据树状结构, 该树状表格有 4 层, 控制生成其子结点, 并使父结点所占的单元格也随之生成。同 其中 A 为根结点; B 、C 、 、J 为支结点; K 、L 、 R 为叶结点。 时在 Excel工作表中以作为父结点的单元格为对象, 通过控件 并利用 V B A 语言对此过程进行编程。 1.2 主要算法和代码 ? 打开 Excel应用程序, 新建一个工作表; 在该工作表中 创建一个如图 4 所示的控件, 并将控件 的位置、大小均设置为 固定。 图 1 图 2 表式 1 在 中, 表格的单元格组成是由行列坐标所确定的。绘 Excel 制树状表格时 , 叶结点占一个单元格, 父结点所占的单元格数 可能不止一个, 此时就要合并相应的单元格。而父结点所占的 图 4 单元格数应是其所有叶结点的数量。例如图2中, 其中B 有 2012-07-19################2012-07-19#######2#012-07-19######## 、、、共 个叶结点, 所以 所占的单元格数为 ; 而 有 在工作表中创建一个名为 的宏, 其主要实现 K L M N 4 B 4A ? B uildTree ' 生成树状表格的代码.LineS tyle=xlC ontinuous S ub B uildTree() E nd W ith D im n A s Integer, x A s Integer, y A s Integer ' 确定当前激活 W ith S election.B orders (xlInsideH orizontal) 单元格的行列坐标( x, y) 以及分支度 n( n>0) .LineS tyle=xlC ontinuous ' 选择将作为父结点的单元格为当前活动单元格; 并在活动单元格 E nd W ith 内输入其分支度, 即父结点含有的子结点数量 E nd If E nd S ub n=A ctiveC ell.V alue x=A ctiveC ell.R ow ? 将所创建的控件指定到宏 B uildTree。 y=A ctiveC ell.C olum n 1.3 具体操作过程 ' 根结点的生成过程 下面以生成图 1 中的表式 1 为例, 描述使用该程序实现树 ' 因为在 E xcel中, 插入行或列的操作默认的是向上插入行, 向左插 状表格的制作过程( 见图 5) 。 入列。所以在所合并的单元格的范围内, 除了最上边一行和最左 ? 确定树根 A 的起始单元格, 可以是任意的单元格, 并输 边一列的位置以外的任何单元格位置插入行或列, 合并单元格都 入分支度 3; 会随之增加相应的单元格 ? 再重新选择该单元格, 使其成为当前活动单元格, 单击 C ells(x - 1, y).S elect “生成树状表格”控件, 生成形如图 5?的树状表格; m =S election. C olum n ' 判断当前活动单元格的位置。根据当前 ? 在支结点 B 所在的单元格, 输入 B 的分支度 2; 活动单元格上一行单元格的列坐标来确定当前活动单元格是否 ? 再重新选择该单元格作为父结点, 使其成为当前活动单 位于树状表格的最左端 元格, 单击“生成树状表格”控件, 生成形如图 5?中的树状表格; For i=1 To n 1 ' 利用循环完成列的插入, 插入的列数是由所输 ? 重复?、?操作过程。整个过程的关键是分别选择将作 入的分支度来确定 为父结点的单元格为当前活动单元格, 并确定其分支度。 If m =y Then C olum ns(y + 1).Insert ' 如果位于最左端 , 则从下一列开始 插入新列 E lse C olum ns(y).Insert ' 如果没有位于最左端, 则从当前列开始 插入新列 E nd If N ext i R ange (C ells(x, y), C ells(x, y + n - 1)).S elect S election. M erge S election.C learC ontents ' 合并所选择的单元格, 从而完成根结点 的生成过程 ' 设置所生成树状表格的格式, 以下只是绘制了表格的边框线, 可以 根据需要设置字体、线型等其他格式 图 5 R ange(C ells(x, y), C ells(x + 1, y + n - 1)).S elect S election.B orders (xlD iagonalD ow n).LineS tyle=xlN one 结束语2 ? 本方法的主要思想就是把制作整个树状表格的过程看 S election.B orders (xlD iagonalU p).LineS tyle=xlN one W ith S election.B orders (xlE dgeLeft) 成是制作形如图 3?所示的树状表格的重复过程, 从而简化了 .LineS tyle=xlC ontinuous 整个制作过程。 E nd W ith ? 只 要 根 结 点 所 在 的 单 元 格 位 置 确 定 后 , 可 以 按 层 的 W ith S election.B orders(xlE dgeTop) 顺 序 生 成 树 状 表 格 , 也 可 以 按 照 子 树 的 顺 序 生 成 树 状 表 格 .LineS tyle=xlC ontinuous ( 比 较 具 有 灵 活 性) ; 而 且 可 以 根 据 需 要 生 成 任 意 层 和 形 状 E nd W ith 的 树 状 表 格 。 W ith S election.B orders (xlE dgeB ottom ) ? 本程序制作的树状表格的格式比较简单, 读者可以根 .LineS tyle=xlC ontinuous 据需要添加用来设置表格格式的程序。 E nd W ith ? 本程序对分支度有一定的限制。一是在父结点生成在其 W ith S election.B orders (xlE dgeR ight) 子结点之前, 必须明确其分支度, 而在生成子结点之后, 不易再 .LineS tyle=xlC ontinuous 改动; 二是当父结点的分支度为 1 时, 则其子结点的分支度也只 E nd W ith 能为 1。对于上述限制以外的情况, 程序需要进一步完善。 If n>1 Then 参考文献: W ith S election.B orders (xlInsideV ertical) [1] 蒙德龙,岑尉平,刘宗伟.使用 D elphi+ Excel制作树状表格[J].计算机 时代,2003.8:44~ 46 [2] (美 )Jelen,B .(美 ),Jelen,B .,Syrstad,T .著 ,王 军 等 译 .巧 学 巧 用 Excel 与宏( 中文版) 电子工业出版社 2003 V B A [M ].,2005. ? Your requestcould not be processed becauseof a configurationerror: "Could not connect to LDAPserver." For assistance,contact your network support team. file:///C|/Users/Administrator/Desktop/新建文本文档.txt 涵盖各行业最丰富完备的资料文献,最前瞻权威的行业动态,是专业人士的不二选择。 file:///C|/Users/Administrator/Desktop/新建文本文档.txt2012/8/26 12:19:58
本文档为【在Excel中使用VBA生成树状表格】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_624976
暂无简介~
格式:doc
大小:37KB
软件:Word
页数:6
分类:生活休闲
上传时间:2017-09-25
浏览量:142