|
回复Alexander:
在最初的设计的时候,是想弄一个通用的设置来删除拐弯行的,基本思路是,
1、确定某一列是每行都有数据的,并且是不拐弯的,列A。
2、在循环分列到最后一行以后,再往回做一遍循环,如果列A的数据是空的,那么把其他列的数据往上合并,然后删除该行。
在处理具体问题的时候,发现第2步往上合并也需要是有条件的,我偷懒了一下,没做成通用的。
基于目前的excel,可以通过【SETUP】设置,和修改一点VBA程序来实现,
举个例子,以下是应收帐龄表:
××××××××××××××××××××××××××××
未付 1-15 天 16-30 天 31-60 天 61-90 天 91-120 天 121+ 天
客户 金额 当前 过期 过期 过期 过期 过期 过期
------------------- ----------------------- ----------------- ---------------- ---------------- ----------------- ---------------- ---------------- ----------------
11002北京弘鹏硕食品公司 81,982.01 78,000.00 3,982.01 0.00 0.00 0.00 0.00 0.00
CLIENT11002 95.14% 4.86% 0.00% 0.00% 0.00% 0.00% 0.00%
帐户客户余额: 81,982.01
11003北京越宇世纪商贸有限 19,190.61 0.00 19,190.61 0.00 0.00 0.00 0.00 0.00
公司 0.00% 100.00% 0.00% 0.00% 0.00% 0.00% 0.00%
CLIENT11003
××××××××××××××××××××××××××××
我们需要的结果是:
××××××××××××××××××××××××××××
客户 未付金额 当前 15过期 30过期 60过期 90过期 120过期 121+过期
------------------- ----------------------- ----------------- ---------------- ---------------- ----------------- ---------------- ---------------- ----------------
11002北京弘鹏硕食品公司 81,982.01 78,000.00 3,982.01 0.00 0.00 0.00 0.00 0.00
11003北京越宇世纪商贸有限公司 19,190.61 0.00 19,190.61 0.00 0.00 0.00 0.00 0.00
××××××××××××××××××××××××××××
蓝色部分有了拐弯,我们要把第一列合并到上面一行,设置如下:
1、研究报表,第二列是唯一的,每行都有,并且是不拐弯的,设置【SETUP】sheet,将第二列设置成唯一标识,见附件。
2、在VBA代码的100删除拐弯行那里输入以下代码,将第一列的拐弯数据往上合并。
++++++++++++++++++++++++++++++++++++++
Do
setup_column_width_r = 2
setup_column_width_c = 5
result_c = result_column_begin
Do
If Worksheets("SETUP").Cells(setup_column_width_r, setup_column_width_c + 1) = "是" And Worksheets("RESULT").Cells(result_r, result_column_begin + setup_column_width_r - 2) = "" Then
Worksheets("RESULT").Cells(result_r - 1, 1).Value = Worksheets("RESULT").Cells(result_r - 1, 1).Value & Worksheets("RESULT").Cells(result_r, 1).Value
这里是要根据实际情况修改的,注意红色部分,1代表是第一列进行拐弯的合并,如果你的报表有别的列需要合并,那么这里就需要复制这段代码,然后填上不同的列代码。
Rows(result_r).Select
Selection.Delete Shift:=xlUp
Exit Do
ElseIf Worksheets("SETUP").Cells(setup_column_width_r, setup_column_width_c + 1) = "是" And Len(Worksheets("RESULT").Cells(result_r, result_column_begin + setup_column_width_r - 2)) > 0 Then
Exit Do
End If
setup_column_width_r = setup_column_width_r + 1
Loop Until Worksheets("SETUP").Cells(setup_column_width_r, setup_column_width_c) = ""
result_r = result_r - 1
Rows(result_r).Select
Loop Until result_r = 1
+++++++++++++++++++++++++++++++++
附上有拐弯的AR帐龄分析表转换的excel表,供参考。过两天等有空了,争取把这个逻辑也弄成一个设置。
上面的字很多,见谅。
[ 本帖最后由 zwhaha 于 2009-7-13 12:49 编辑 ] |
|