Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1109|回复: 9

[已解决]有个总表拆分的表格求助

[复制链接]
发表于 2021-11-21 23:42 | 显示全部楼层 |阅读模式
上个月咱们的心正意诚身修版主帮忙做了个总表拆分,因为上一帖中版主帮忙改到很晚后来我也没再跟进,现在这个表还有点小瑕疵:分表里A、F、I、K列有公式,但执行代码后这些公式会被清除,我也尝试过修改代码但还是没成功,请问有什么办法能保留这些公式吗?非常感谢! 总表拆分.rar (22.41 KB, 下载次数: 12)
 楼主| 发表于 2021-11-23 09:17 | 显示全部楼层
回复

使用道具 举报

发表于 2021-11-23 09:29 | 显示全部楼层
看不懂,既然分表是从总表中拆分而来,分表再保留公式是什么意思?
从代码层面,分表的 A:L都是用数组直接填充的,不可能有公式。看代码的最后几行:
      Sheets(NMS).Range("A" & AA).Resize(Q, 9) = BRR        '从a列向右填充9列,直接填到了 I 列
      Sheets(NMS).Range("L" & AA).Resize(Q, 1) = Application.Transpose(CRR)   '这里又填充了 L 列
似乎只有 J 和 K 列没有填充;
回复

使用道具 举报

 楼主| 发表于 2021-11-23 14:17 | 显示全部楼层
本帖最后由 zxmlysxl 于 2021-11-23 15:06 编辑
hfwufanhf2006 发表于 2021-11-23 09:29
看不懂,既然分表是从总表中拆分而来,分表再保留公式是什么意思?
从代码层面,分表的 A:L都是用数组直接 ...

其实我想实现这样的效果(像下图这样):当C列不为空时A列填上序号,如果C列为空则A列对应行也为空。因为之前是在单元格中用公式实现的所以想保住公式。如果VBA能实现就更好,谢谢大佬

   序号.png


回复

使用道具 举报

发表于 2021-11-23 15:28 | 显示全部楼层
zxmlysxl 发表于 2021-11-23 14:17
其实我想实现这样的效果(像下图这样):当C列不为空时A列填上序号,如果C列为空则A列对应行也为空。因为 ...

从你上传的附件看,你要的效果代码已经实现了啊。
回复

使用道具 举报

 楼主| 发表于 2021-11-23 15:33 | 显示全部楼层
hfwufanhf2006 发表于 2021-11-23 15:28
从你上传的附件看,你要的效果代码已经实现了啊。

附件中的代码A列只会自动填充,但没实现跳过C列空行递增
回复

使用道具 举报

发表于 2021-11-23 16:22 | 显示全部楼层
zxmlysxl 发表于 2021-11-23 15:33
附件中的代码A列只会自动填充,但没实现跳过C列空行递增

我测试了代码,没发现问题,看截图第13行,就是你要的效果啊。
1.png
回复

使用道具 举报

 楼主| 发表于 2021-11-23 17:08 | 显示全部楼层
hfwufanhf2006 发表于 2021-11-23 16:22
我测试了代码,没发现问题,看截图第13行,就是你要的效果啊。

如果是空表且A4也为空时不会自动编序号
回复

使用道具 举报

发表于 2021-11-24 10:37 | 显示全部楼层    本楼为最佳答案   
zxmlysxl 发表于 2021-11-23 17:08
如果是空表且A4也为空时不会自动编序号

我知道你问题的原因了,但你这个问题还需要你自己仔细规划,我感觉你这个表有缺陷,先看我修改后的截图:

1、如果按你描述,我把所有内容删除,得到的结果会从第3行写入,注意是第3行,因为A列的标题行在2行,可是你后面G、H、I列的标题行是第三行,这就是你这个表不规范的地方,导致代码判断失误,代码只是判断A列,你需要先把A列的标题行做到与其他标题行相同;
2、关于代码,因为它总是假设原来是有数据的,因此它不会假设没有数据这种情况,因此会有:
     BRR(Q, 1) = Q + AB

     其中 q=1,AB是原有数据的最后编码,如果原来是有数据的,这个结果是对的,如果原来没数据,AB这表示A列的标题行,也就是序号,你可以观察另一张截图最下面的监视窗口,AB的值是“序号”,因此 "序号"+任何数字都是非法的,也就是错误的原因;
3、我只能稍微修改了下代码,看其中一张代码截图蓝色标记的地方,有个条件判断,当int(AB)=0,ab=0,它把“序号”+数组 变成了 0+数组 的形式,可以进行合法的运算了。
     运算后的数据截图的第3-4行显示的是日期,是因为单元格的格式定义是日期的效果,它会把 数字1 变成 1900/1/1,第5行之后就正常了;
4、总体上看,因为涉及第4行的期初,我也不知道第4行的期初是否一定会存在或者有可能也会不存在,存在的情况下是否一定会有编号,所以你这个问题其实不太严谨,还需要再仔细规范一下;

1.png
3.png
2.png
回复

使用道具 举报

 楼主| 发表于 2021-11-24 12:44 | 显示全部楼层
本帖最后由 zxmlysxl 于 2021-11-24 12:57 编辑
hfwufanhf2006 发表于 2021-11-24 10:37
我知道你问题的原因了,但你这个问题还需要你自己仔细规划,我感觉你这个表有缺陷,先看我修改后的截图: ...

感谢大佬,这个表是我草率了,正式表格A-F列的2,3行是合并的,所以“上月余额”一定是在第4行,同时这里不需要序号,序号从首次出现“车牌号”数据的行开始

刚把AB的判断加进去测试无论第5行有没有“车牌号”都能准确自动编序号,非常感谢大佬。主要是我学到了居然还可以通过监视窗口来看运行结果(以前一直不知道
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-3 15:16 , Processed in 1.073952 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表