[已解决] 海量数据分摊,求助大神帮忙

  [复制链接]
查看110665 | 回复120 | 2021-2-18 22:04:44 | 显示全部楼层 |阅读模式
拆分条件1.查询《数据源》表每一行数据2.如果“条件”列,为“A”时。则拆分该行。按比例拆分(《拆分条件》表“C列“,保留整数,分摊后合计数不能有差),并删除原行,拆分结果放入《结果》表中3.如果“条件”列,为“B”时,则将同一个”编号“列的所有行按"数据"列求和。如果求和结果小于20万,不拆分这些行(就是不进行任何操作),如果求和结果大于等于20万,则拆分该行。按比例拆分(《拆分条件》表“C列“,保留整数,分摊后合计数不能有差),并删除原行,拆分结果放入《结果》表中[tr] [/tr]
[tr] [/tr]
[tr] [/tr]
[tr] [/tr]
[tr] [/tr]
[tr] [/tr]
[tr] [/tr]
举例:《数据源》第二行,条件为"A",所以我需要将”数据“行的”1439“这个值进行拆分,拆分成10行(按比例),导入《结果》表《数据源》第五行,条件为"B",对应编号为"BH00150",我将所有"BH00150"且条件为"B"的”数据“行进行汇总(结果为200087),因为200087大于20万,所以这些行需要全部进行拆分,每行数据都拆分成10行(按比例),导入《结果》表,并删除《数据源》表中原来的行
11003111747333.rar (1.98 MB, 下载次数: 0)
回复

使用道具 举报

moma | 2021-2-18 22:09:44 | 显示全部楼层
简单看了一下您的数据,实现起来应不算难,问题在于,当通过4舍5入的方式得到的整数之和与源数有差异的时候,调整哪个数?第1个?最小的?还是随意?
回复

使用道具 举报

nana | 2021-2-18 22:15:45 | 显示全部楼层
简单看了一下您的数据,实现起来应不算难,问题在于,当通过4舍5入的方式得到的整数之和与源数有差异的时候 ...


第一个吧。数据量大。关键我只会简单的VBA。运行的时候很卡。实际数据有10万左右。且项目可能不一定是10个。一般在1-20个之间浮动。
回复

使用道具 举报

sibada | 2021-2-18 22:22:45 | 显示全部楼层
这个问题用Power Query解起来比较简单,通过几个步骤的操作,结合List.Transform函数做一下数据转换即可,我用Power Query简单做了一个,步骤不多,如下图所示: 11003111747331.png
其中的一些步骤可以按需要进行整合一下,不过目前这个拆分也还比较快,4万行数据拆成22万多,也就几秒钟。
11003111747332.png
附件里的数据我删了大部分,因为源数据拆分后再压缩仍有13M多,上传不了。您先参考一下。



11003111747334.rar (66.37 KB, 下载次数: 0)
回复

使用道具 举报

漫步园林路 | 2021-2-18 22:26:45 | 显示全部楼层
这个问题用Power Query解起来比较简单,通过几个步骤的操作,结合List.Transform函数做一下数据转换即可, ...


思路不错,学习了,厉害
回复

使用道具 举报

心怡 | 2021-5-3 12:30:57 来自手机 | 显示全部楼层
元芳你怎么看?
回复

使用道具 举报

卡车司机 | 2021-6-29 17:14:00 | 显示全部楼层
众里寻他千百度,蓦然回首在这里!
回复

使用道具 举报

shiming | 2021-7-15 08:57:46 来自手机 | 显示全部楼层
回个帖子,下班咯~
回复

使用道具 举报

zyzjy | 2021-8-6 22:40:15 | 显示全部楼层
围观 围观 沙发在哪里!!!
回复

使用道具 举报

信息量 | 2021-9-2 08:18:47 | 显示全部楼层
LZ是天才,坚定完毕
回复

使用道具 举报

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

本版积分规则