EXCEL如何进行50万大数据处理-干货篇

有时候可能我们会遇到一些大数据量的处理,在500000行数据里进行匹配计算,难度相当大,因为电脑配置跟不上的情况下,可能复制粘贴移动都会卡死,更不要说进行匹配了,就在前2天部门小伙伴就遇到了这个问题……这里就来解决下这种EXCEL处理大数据的方法。

遇到案例的场景是袁同学有500000行的运单要计算运费,因为数据量大,所以操作匹配地址和运费直接导致卡死。价格表和数据源截图如下,需要按照价格表里的省份和数据源里的省份和重量还有会员名找到对应的运费,3个单独重量区间的报价和3kg按照固定费用加上重量乘中转费用得到最终报价。如果会员是诸葛亮,那么0.5kg以内和0.6kg以内的价格不同。

解题思路1:函数vlookup匹配

按照正常的思路,就是把价格表里首续重匹配进数据源,再手工输入运费计算的公式得到最终的运费,填入对应的运费列。这种方法失败了,电脑直接卡死。

解题思路2:vba的find传值调用

先定义两个变量,i变量负责循环,k变量负责查找价格表的find的地址对应的行号,再利用if的条件判断区分开不同的价格表,这是我最初的思路,循环处理数据源的重量,传值调用到价格表里找到重量单元格,利用单元格里的公式把价格表里的运费拿到数据源里的价格运费,代码撸了半天,还没解决掉不同会员的计算问题,结果就发现电脑运行就直接卡死了……50万数据确实太大,在单元格里的传值调用,也直接让电脑卡死,这种方法也失败了。

解题思路3:vba的数组的使用

之前有听说过数组很神奇,寄现学花了一晚上补了数组的知识,尝试用数组去解决问题。利用vba的数组把数据源,价格表 存入数组,利用内存解决,然后用find函数再去读取价格表里的地址的值,找到价格后,把价格表的的运费值再传给数据源的数组,然后把内存中的数据再填回单元格,这样的粗略思路出来后,可以实现电脑的运算,结果是64秒,虽然卡,但是还是看到了希望。

解题思路4:vba的数组循环处理

看到还是用时很长,思路就想在内存数组里全部处理掉,再把值和单元格进行交互,这样就达到了内存里数据的计算,可以提高计算效率。这样运行速度直接提升到了18秒。这样基本上的思路就成型了。

在不懈的努力下,修正了错误的代码和优化了循环和判断的计算逻辑,并加入区分诸葛亮会员的不同计算,这样就完成了最终的计算,50万数据用时47秒,基本上达到了当初的目标,实现了快速计算。

最终,我们的目标就达到啦,47秒钟把50万数据处理完毕了。是不是便捷?哈哈,其实VBA很简单,只要会认识基本的vb语言,再理解整体的思路逻辑,学起来还是很快的。欢迎大家一起学习,私聊结算中心交流~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181010G1SWYV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券