当你发现不停的用For循环来处理数据速度慢的受不了了,你肯定会想怎么才能提高一些效率。比如前面我们说到的对比2个表数据,我们是使用For循环去逐个的对比判断,如果能有1个东西让我们可以快速的在一组数据里找到需要的、或者是找不到的时候返回false的话,那我们就不需要用For循环了,那有没有这种东西呢?
我们在使用VBA处理Excel数据的时候,很多时候就是对数据进行分类汇总、查找等等。一般这种功能都是使用字典来实现,比如汇总数据功能。
代码和汇总、查找数据等一样,仅仅是修改了sql语句,相比使用字典,代码更加的简单,在需要更换去重字段条件的时候,也更加的方便。
JS中的Map和VBA里的字典Dictionary基本上一样的,主要的功能就是保存一对Key-Value的数据,保证Key不重复。
上一节我们讨论了 Python 在数据处理上的优势,前后台大概收到的有用评论如下:
比较简单的一段代码,和汇总数据一样,这里只是按照一个条件进行查找,需要按照2个甚至多个条件来查找的时候,需要改动的代码有:
每当有人发布关于 python 处理 Excel 数据的文章,总会有人只看了标题就评论:
前面说过了字典去除重复的使用方法,既然字典可以去除重复,那就可以统计数据出现的次数,现在我们来说说如何利用字典来做到这个。
本号之前已经分享过关于如何使用 Python 中的数据处理分析包 pandas 处理 Excel 的数据,本文继续分享一个小案例,此案例源于上周末帮朋友做的一个需求,并且是以 vba 编写解决,后来我用 Python 再解决一次,通过本文作简单分享。
这是在知乎上看到的一个问题,我试着用VBA来解决。欢迎大家就自已使用Excel中遇到的问题或想要的解决方案提问,我将尽力解答。
在前面的字典介绍中,我们添加Key的时候,没有特别的去注意Key的数据类型,我们先做1个这样的演示操作:
Excel中的字典(Dictionary)对大多数人来说都是个谜,即使是有些很熟悉VBA的人,可能对其都还不了解。其实,字典是一个很好的工具,运行快速,可以执行一些很好的计算。
字典(Dictionary)是一种通过键(key)和项(item)(注:键和项是字典中的术语)存储唯一项的方法。它是一种基于唯一键存储数据的极好工具,它的强大之处在于可以使用键来存储和合并数据。
还是接着上一次的例子,分年龄段统计人数工作完成后,你又接到任务需要将总表根据年龄段拆分为多个分表。
文章背景:在工作生活中,有时需要进行删除重复行的操作。比如样品测试时,难免存在复测数据,一般需要保留最后测试的数据。之前通过拷贝行的方式保留最后一行的数据(参见文末的延伸阅读1),但运行效率较低。目前通过借助数组和字典达到删除重复行的效果。
文章背景: 在VBA中,有这么一个对象:字典(Dictionary),它像我们用过的纸质字典一样,用键值对(key:item)来表示。键可以理解为新华字典检字表中的关键字,而值可以理解为对关键字的解释。字典在数据的去重上很有用。
有时候,我们可能想要知道某一区域中是否输入了重复值,这样好做进一步的处理。下面的VBA自定义函数可以帮助我们作出这样的判断:
有1个工作簿,多个工作表,格式一致,按某列作为关键字(具有唯一性),汇总数据,以工作表名称作为汇总后的新列名称,并生成1列合计。
说到必需学习的数据工具, Excel 无疑是唯一的答案 , 各种基本操作、函数公式、透视表,这些都是非常好用的功能,加上 vba 可以实现自动化需求。但是 vba 的数据处理能力实在有限,而 Python 之所以在数据领域受宠,很大原因是其有着一些非常好用的库。 ◆ 在数据分析方面,Python实际上已经远远VBA,如果你还不知道如何上手Python处理Excel数据, 博文视点学院特邀 童大谦老师推出一系列视频精讲,帮助小伙伴实现高效的Python自动化办公,其中《用Python实现Excel数据处理自动
记录下自己学习使用VBA实现解压ZIP的过程,主要参考文章: http://www.cnblogs.com/esingchan/p/3958962.html
需要实现这个功能,在VBA里首先想到的应该还是字典,首先将表格2中的字段对应关系记录到字典,然后在表格1基础上增加一列,遍历表格1,利用字典将字段A对应的字段C读取出来即可。
在前面的一系列文章中,我们详细讲解了集合、数组和ArrayList,我们通常可以使用它们来存储成组的数据,方便后面的操作。接下来的几篇文章,我们将详细讲解字典。
使用VBA代码来实现自然也是没有问题的,使用字典来分别记录行和列的序号,然后输出到1个二维数组就可以:
在一维表转二维表里介绍了使用字典来转换表格的方法,可以看到使用字典的方法代码量还是有一点多的,有点复杂。
如果“a”代表“Apple”,“b”代表“Bilibili”,“c”代表“Coolqi”,……,等等。我们可以在单元格中只输入这些代表字母,而让Excel自动输出完整的单词内容,如下图1所示。
使用VBA的CreateObject函数,这种情况下要知道COM对象的名称。
日常工作中经常需要对一系列的表进行合并,或者对一份数据按照某个分类进行拆分,今天我们介绍Python和VBA两种实现方案供大家参考~
FileSystemObject与字典Dictionary都是工具-应用中Microsoft Scripting Runtime的对象,从名字能够看出,这个对象就是用来操作文件的。
👆点击“博文视点Broadview”,获取更多书讯 ▊ VBA与Python:当王者荣耀遇到卷王之王 VBA语言是VB的一个子集,具有简单易学、功能强大的特点。 上世纪90年代末至今,VBA语言被大部分主流行业软件用作脚本语言,包括办公软件如Excel、Word、PowerPoint等,GIS软件如ArcGIS、MapInfo、GeoMedia等,CAD软件如AutoCAD、 SolidWorks等,统计软件如SPSS等,甚至连图形软件如PhotoShop、CoralDraw等也使用VBA进行脚本编程。
在利用VBAProject来共用VBA代码里介绍了使用VBAProject管理代码的方法,但是有一个不方便的地方,如果想把一个做好的功能(引用了一些其他工程代码)发送给其他人使用,就需要把所引用的工程代码复制到一起,再发给其他人,这样手动处理有些麻烦。
在简化程序编写-查找里,已经介绍过了查找数据的方法,里面演示的数据非常简单,数据源是没有重复的。
Set是不能保存重复值的,所以无法添加重复值到Set中,利用这个特性就可以做去重功能。
需求:数据保存在A列中,数据组之间使用全角逗号(,)分隔,整理之后需要将每组数据开始的圆括号部分移到末尾,并合并相同的全角方括号部分(【】)的内容。实际效果见B列。
一说到数据库,一般都会想到那些很专业的数据库,其实Excel本身也可以作为数据库来使用。
前面创建的MyVBA加载宏,设置成了启动就打开的加载宏,只有一个打开宏文件的功能:
在前一篇文章《基础扩展 | 15:队列》中,我们使用VBA代码实现了队列数据结构,本文将在广度优先搜索中应用队列。因此,本文的基础代码在《基础扩展 | 15:队列》中。
ADO (ActiveX Data Objects,ActiveX数据对象)和字典Dictionary一样,就是Windows系统做好了的一个东西,是一种叫做COM对象的东西。
有合并工作表,自然也离不开拆分工作表,将一个总表,按照某一列的内容拆分为多个工作表,然后可以再结合前面的一个工作簿的工作表另存为工作簿功能,就可以生成多个工作簿进行分发了:
在学习了《使用字典汇总数据》后,让我们再往前一步。假设我们的数据需要在多个列上进行检查。将A列中的数据链接到B列中的数据,以创建唯一标识符,希望基于2列创建汇总,而不只是前一个示例中所示的一个。假设供应商是Bob,Bob订购了Apple和Orange。订单分为6个不同行,但不是Apple就是Orange。
类是一种特殊的代码组织方式,普通模块写的代码是Sub过程、或者Function函数,而类模块里的代码,它都属于这个类,在它内部也可以有Sub过程、或者Function函数,但和普通模块里不同的是,它在使用之前,必须要先创建类的实例,也就是和VBA使用外部对象字典等那样,要New一个:
文章背景:在数据处理时,有时需要根据指定列的内容进行重新排序。比如样品测试时,假设存在5个测试点,其中2号点和3号点无需测,在做报告时,一般会保留2号点和3号点的位置,测试数据为空。
在前面合并表格里提到,用union all关键字进行合并数据,union all只是简单的将所有的数据进行复制到一起,不做其他的处理。
原文在简书上发表,再同步到Excel催化剂微信公众号或其他平台上,文章后续有修改和更新将在简书上操作, 其他平台不作同步修改更新,因此建议阅读其他出处的文章时,尽可能跳转回简书平台上查看。
今天我将带大家分别使用MySQL、Excel、Pandas、VBA和Python来实现这个需求。
【问题】我们知道社保导出的数据是很多合并的单元格,如果要查找一个数据都要找很久,如果数量多了更多费时,基于以上问题,特用VBA设计一个批量查找的程序。
既然字典有Exists方法可以判断是否存在,那在Add之前我们先进行一次判断就可以了:
在代码中尽量使用 LBound 和 UBound 来获取数组最小和最大下标,可以在模块中使用option base 1 来指定下标从 1 开始
Set dic1 = CreateObject("Scripting.Dictionary")
经常要整理电脑中的文件,特别是每当要自查电脑文件时。每次都是将一个一个文件夹打开,将其中的文件全部删除,但要保留文件夹,以便于后面再陆续存放新的文件。
领取专属 10元无门槛券
手把手带您无忧上云