1、合并报表zt0132008资产负债表.rep简单的合并方式:将zt013的资产负债表的对应的单元格与ZT003对应的单元格相加。批处理放在以下文件夹:合并报表批处理2008我们先简单建立一个批处理,用以实现两个单元格的简单合并,文件命名为“zt003zcfzb.shl”批命令如下:LETC7=C7+合并报表zt0032008资产负债表.rep-C7RELA年WITH年,月WITH月起码知道以上的命令可以实现将C7单元格的数据加上“D:合并报表zt0032008资产负债表.rep”C7的数据。但是如果这样做的话,每一个单元格就要一条语句,而且如果有多张表的话,就更加复杂,而且如果到时候要修改的话
2、,比如到了2009年的话,每一条都要改一下,甚至如果单元格发生变化,要改的话,那不是要疯掉!所以在想能不能通过变量来实现,便于后续修改。?经过翻查资料,大概知道了变量的应用,然后就来实现吧。第一步,把报表路径变量化,可以直接设定一个变量&rep,然后赋值,语句如下:let&rep=那么单元格的赋值就可以这样来写:LETC7=C7+&rep-C7RELA年WITH&年,月WITH&这样写可以减少修改报表路径的问题,至少改个路径变量值,其他就不用改了,相对来说比较方便一些,但是,问题是单元格也是比较麻烦,一条一来,有没有什么其他办法呢?睡觉的时候突然想到能否用循环来处理,如果可以就好办多了,于是就
3、开始实施,用while循环,但是问题是如何来表示列号和行号呢?经过翻查资料,有一个意外的发现:有了这个意外的发现之后,我就想,干脆把路径、列号、行号都用变量表示算了,看看情况如何,代码如下:/设置报表路径、合并起始列、起始行rep1=合并报表rep2=zt003rep3=2008rep4=资产负债表.repcol0=3row0=7/设置报表路径rep=&rep1+&rep2+&rep3+&rep4/设置列号col=&col0/设置行号row=&row0/通过循环合并数据,合并C755的单元格while&col=4row=55let!&col#&row=!row+&!rowrela年with&年
4、,月with&row+1endcol+1做了以上变动之后,至少修改起来事比较简单,可以把这段代码保存为“zt003zcfzb.shl”通过以上的批处理命令,我们在执行此批命令的时候,就可以实现把一个表的C755的单元格与ZT003的对应的单元格相加。现在的情况有所变化,我们有两种需要合并的报表,比如最终合并到以下表:合并报表01母公司2008资产负债表.rep如何实现呢?如何来利用之前做的批命令呢?难道需要把批命令重复写一遍吗?突然想到,能否通过调用批命令文件,相当于编程里面的“include”,那问题就可以解决了,也就是说,将一个合并的批命令写成一个批命令文件,然后来调用,只要有需要合并的时
5、候,就调用此批命令,问题就可以解决了,减少重复工作,同时容易修改。在批处理里面是有一个调用批命令的命令,就是用”DO”命令。我们把之前做的“zt003zcfzb.shl”重新另存为“zcfzb_hbbb.shl”,路径如下:DO合并报表批命令2008zcfzb_hbbb.shl然后我们建立一个“zcfzb_main.shl”的批处理文件来调用。代码如下:/首先进入数据状态DATA/报表取数把此文件放在:合并报表00批命令01母公司2008zcfzb_main.shl为了能够在进入报表的时候,将最终合并的报表的数据先清空,同样我们做一个清空的批处理命令。/清空数据,合并数据前先把数据清空。CLE
6、ARC755CLEARG7:H55把文件命名为“D:合并报表批命令2008zcfzb_clear.shl”以备调用然后我们对“zcfzb_main.shl”的批命令再次修改,加入清除数据的批处理。/清空数据合并报表批命令2008zcfzb_clear.shl那么以后不管有多少张表,资产负债表,损益表等等,只要每一张表都保存相应的三个批处理(主命令、清空命令、合并命令)。只是每张表需要修改的地方就是将“zcfzb_hbbb.shl”里面的参数做一些修改。比如路径、文件名称、年份,列名等等。但是能否有更好的办法呢?能否将合并数据作为一个通用的模板,用来调用呢?然后把变量的赋值放在主程序中进行,这样
7、不是更好吗?模型:这个时候,我们开始做统一规划了:合并报表批命令2008主程序(主批处理):zcfzb_main.shl子程序(清空数据):zcfzb_clear.shl子程序(合并报表):zcfzb_hbbb.shl先把主程序列出:/-程序开始-/合并报表/合并报表说明:/zt003广海本部/-首先进入数据状态-/-把变量清空,然后要求输入关键字。freeallif年=0disp请先输入关键字returnelse/-设置批处理命令的路径。shl01=合并报表00批命令shl02=01母公司shl03=shl04=&shl01+&shl02+&shl03shlclr=zcfzb_clear.s
8、hlshlhb=zcfzb_hbbb.shlshlclr=&shl04+&shlclrshlhb=&shlhb/-清空数据-DO&/-初始化取数报表-/设置取数帐套col01=3/设置列起始值Ccolmax01=4/设置列循环最大值Dcol02=7Gcolmax02=8/设置列循环最大值Hrow01=7/设置行起始值7rowmax=55/设置行循环最大值55/-报表取数-zt003row0=&row01/-01.分列取数1col0=&col01/设置列起始值Ccolmax=&colmax01/-02.分列取数2col02/设置列起始值Gcolmax02/-END-/-保存报表-/save/第一层IF的结尾清空命令:CLEARc7CLEARg7:h5合并命令:/-合并报表-/通过循环合并数据=&colmaxrowmax/重新置位,否则行的循环无法进行以后如果需要合并报表,其实要改的就是zcfzb_main.shl文件里面的两个段落,一个是“路径设置”,一个是“报表取数”。比如需要修改批命令的路径和批命令对应的文件名,则改以下蓝色部分。02合并口径如果需要修改需要合并的报表,那么就改以下内容:如果需要合并的列和行需要修改,则改:如果需要添加合并的报表,比如添加zt013,那么就在zt003的合并代码下,添加以下代码,其实就是复制。/-报表取数-zt013zt013