VBA
cyber_1987
专注数据的数据分析师,以Python、VBA、Power query为主
展开
-
VBA:把每隔一行自动添加N行空白行
思路:新建一个sheet,把表头和第二行先复制黏贴过来,然后从第三行开始遍历,每复制黏贴一行后再往下延N行,直至把原表数据完全复制完毕1、辅助函数Sub create_sheet(i As String)'' 宏3 宏'' On Error GoTo 999 Sheets("新sheet").Select Cells.Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp原创 2022-02-06 13:14:52 · 3182 阅读 · 0 评论 -
VBA:根据某个单元格的值,判断在另一个单元格内是否有并标红
前言:最近在做一个地址标准化的竞赛,里面包括了地址提取、分词、清洗、匹配等一系列动作,等这次竞赛结束后会专门写一篇文章分享源码。之所以要做标题的事情,是因为用了这么多年的Excel,还是习惯Excel的界面,而且因为这次初赛数据量并不大(500条),分数也达到了了一个瓶颈(98.2分),不清楚应该如何提升,所以就想一条条看看到底错在那里。第一步就是要判断提取出来的地址是否准确。如上图所示,我想要的结果就是根据C列,判断B列里是否有一样的内容,如果有的话就用红色标记,使用VBA很简单,不过也查了蛮多资料原创 2020-06-09 10:07:03 · 4421 阅读 · 1 评论 -
VBA:快速把另一个工作簿里的列值根据列名填充进来
前言:之前在使用工作簿与工作簿之间的数据连接时,使用的是vlookup手动做链接,然后断开连接并另存为的方式,虽然做好一次后很方便,但是每次变动需求要修改的话都好累。比如我这里有36个,也就是相当于要做36次vlookup!所以干脆写了一段代码,把一个工作簿里的数据直接黏贴到另一个工作簿里,根据列名自动查找匹配注:这里用的是字典,如果两个工作簿的列名一致的话,可以用数组来代替,更方便。Sub...原创 2019-11-28 23:03:55 · 2078 阅读 · 0 评论 -
VBA:自动找出酒店居住时间重复的客户记录
前言:群里有个需求,蛮有意思的如上表所示,不同的用户有不同的入住时间和退房时间,那有的用户可能会同一天有2条酒店的居住记录,要找出这些记录。思路就是把格式转变为下表并算重复次数,把大于1的记录找出来再把序号剔重即可Sub get_duplicates_row()'Part1:改变原表形式maxrow = Sheets("Sheet1").UsedRange.Rows.Count'M...原创 2019-10-21 20:26:18 · 500 阅读 · 0 评论 -
VBA:求出连续为0的最大值
前言:这种题目在leetcode里就是简单难度,之前用Python写过一个,这次有人有需求就用VBA写了一个玩玩Sub max_continuity_zero()'自动算出一行连续为0的最大值 cal_row = InputBox("需要计算的开始行和结束行(如2,5):") my_rows = VBA.Split(cal_row, ",") start_row =...原创 2019-10-17 15:00:01 · 520 阅读 · 0 评论 -
VBA:通过数组和字典快速填充数字
前言:最近有一项新工作,需要填充如下的表格上面只是一个代理商而已,而同样的代理商有十几家。传统的做法就是做好数据处理后,通过vlookup匹配填充。稍微方便一点的是调整好格式后直接复制黏贴,但是因为不是每个代理商每个月都有这么多佣金类型的,所以可能会出错。当然用power query固定化模板后也是可以操作的,但是我想试试VBA,所以写了以下的代码,通过数组和字典快速填充数字。Sub 数据快...原创 2019-09-12 09:57:16 · 3279 阅读 · 0 评论 -
VBA:自动点评排名靠前、靠后的部门/单位等
前言:之前用python写过一个根据排名自动点评的程序,但是使用的openpyxl等很难打包的库,所以考虑是否可以用vba来写花了1个小时,终于写出来了,代码很短,但是效果还是不错的。一、表格内容:二、点评效果:三、代码Sub 代理商情况通报宏(blank As String) '构建字典,key是原始列(需要复制的),value是目标列(需要黏贴的)Dim dict ...原创 2019-07-23 15:10:29 · 434 阅读 · 0 评论 -
VBA:遍历字典复制指定列的数据到目标列
前言:因为考虑数据量的问题,所以在计算季度数据的时候,做了一个辅助列“季度累计数(至上月)”,季度累计数=本月发展数+季度累计数(至上月),这样就碰到一个问题:需要每个月都把季度累计数复制到季度累计数(至上月)如果列数少的话还好,列数一多真的要奔溃;如果每个月还有要改模板的话,就更讨厌了所以用vba写了一段脚本,自动做上述工作,只需要确定好从什么名字的列复制到什么名字的列即可Sub 季度数据...原创 2019-06-02 09:21:10 · 5598 阅读 · 0 评论 -
Excel:宏运行打开新表后excel崩溃
今天用PQ改了一下模板,信心满满地运行宏,然后到打开新表这一段时,excel崩溃了!!!???不管是断开链接、减少宏代码、把文件从xlsm保存为xlsb、增加等候时间的代码等等都没用,该崩溃还是崩溃!!!还好自己一直有云端备份的习惯,把最近的2封文件拷贝下来,运行了一下,没有问题,能够正常使用。然后把pq的源数据(A)用新的,宏里需要打开的文件(B)用旧的,也能正常使用。看来原因出在需要B...原创 2019-04-30 15:54:51 · 3340 阅读 · 0 评论 -
用VBA做日报
前言:有个同事需要每天做日报,但是电脑又因为种种原因用不了power query,所以就用VBA帮他写了一段代码报表成品如下图:其实东西并不多,只有8列数据,用power query大概也就15分钟的时间,可是VBA我写了整整1天啊~~代码如下:一、基础模块:1、vlookupSub vmatch(list, cellstr, matchtab) 'vlookup匹配,li...原创 2019-01-22 21:45:57 · 2049 阅读 · 0 评论 -
VBA:把excel文件根据某列拆分成不同的utf-8格式的txt文件
前言:同事有个上传文件的需求,要求格式为utf-8格式的txt文件,vba里有个大神写的拆分宏很好用,我在网上又找了写入utf-8 txt文件的办法,组合了一下,就成了以下代码,试验了一下可以拆分Sub 拆分() Dim path As String '获取字典 Set d = CreateObject("scripting.dictionary") '获取当前待处理的工作...原创 2019-01-18 20:41:32 · 1024 阅读 · 1 评论