首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Excel数据处理你是选择Vba还是Python?当然是选pandas!

- 每个销售员单独生成一个表输出 - 最后再输出一个所有货品的汇总表 vba 的方案简短分析 本文的核心不是 vba ,因此这里只做简单的讲解,如果你是 vba 用户,可以获取源码查看。...但是,这样的需求如果在 Python 中,我们的处理效率可以提高多少呢?我使用 Python 的 pandas 包处理,在5分钟内搞定,并且代码有非常好的阅读性与扩展性。...=header ,赋值作为 df 的标题 - df.dropna(subset=[g_pName]) ,把名字列中是空的行去掉 然后即可生成结果,如下: - df.groupby(cols).agg...这里先创建一个 ExcelWriter对象 - res.index.get_level_values(0) ,从分组结果中获得销售人员列,但这里的输出是带重复值的,因此我们需要使用 set 去重复 -...而要使用追加模式,需要使用 openpyxl 引擎,因此需要设置 engine='openpyxl' 新增需求 在完成代码的情况下,如果需要在汇总结果中新增一列对单价列求平均,在 Python 的方案中

3.5K30

VBA中重要的强制申明,谁看谁明白

案例:在「单元格B2」输入不同的行号,点击「显示答案」按钮,计算「F列」和「H列」的乘积,并将每个乘积结果加上公共值「单元格B4」的50,将最终结果显示在相应的单元格 image.png 自信的我们写完代码...,点击「显示答案」按钮,以为答案是这样 image.png 但其实,结果是这样 image.png 看到结果的你,肯定心里一万匹马飘过,“VBA,你这是在侮辱我的智商吗?”...「Dim x, h」表示——告诉VBA接下来的程序我只使用变量x和变量h,遇到没见过的,你就警告窗报错提醒我,并用蓝色批注显示它的位置,方便我修改。...但是,我们在日常工作中,经常出现修改这些固定变量的值,可是代码中多处引用的这个固定值,我要一个个去修改吗?...然后,然后就酿成了一起起杯具的“惨案”。别问我为什么,我经常这样干,而且发生了很多“命案”。 原因是由于同名变量在VBA不同的地方被赋新值,从赋新值开始的地方,其后所有的代码都会引用这个新值。

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Active APT

    尽管他们的工具能够下载和执行可能更加隐秘的任意二进制文件,但该组织的主要关注点似乎是在试图窃取数据的同时尽可能快地在目标网络中传播。我们会错过什么吗?...此恶意代码包以 VBScript 开始,如果 Outlook 进程正在运行,该脚本首先会杀死它,然后通过更改注册表值来消除 Outlook 中 VBA 宏执行的安全性。...这是一种在组织网络中横向移动的非常有效的方式,因为文档通常在同事之间共享。此外,由于这些宏在打开文档时运行,因此在系统上持久保存是一种好方法,因为其中一些文档可能会在不同时间多次打开。...它将生成的可执行文件放在现有目录中,并创建一个计划任务,该任务将每 10 分钟启动一次。从图 6 中可以看出,解码后的源代码中仍然有注释,说明 Gamaredon 的运算符明显草率。...一些 C# 编译器模块示例中包含的源代码中留下了注释,或者 Outlook VBA 模块生成的电子邮件中的俄语编码错误,这表明在发布和使用它们的许多工具之前没有进行严格的审查或测试在野外。

    8K00

    Excel VBA编程

    数组的存取 当将Excel表中的数据传递给数组时,默认建立的是一个二维数组,因此在取数组的值时,需要传递两个数值进去,如果只传入一个数组,会出现下标越界的警告。...**如果记得某个函数大致拼写,在编写代码时只要在【代码窗口】中输入“VBA.”,就可以在系统显示的函数列表中选择需要使用的函数。...执行程序执行的基本语句结构 if语句 在VBA中,if语句的规则如下: if 条件 then 语句 else 条件 select case语句 尽管使用if语句可以解决“多选一”的问题,但当判断的选择条件过多时..."subadd" sub过程中的参数传递 在VBA中,过程的参数传递主要有两种形式:按引用传递和按值传递。...MsgBox "我在学习onkey方法" End Sub 在onkey中可以设置的按键及其对应代码 要使用的键 应设置的代码 Backspace {backspace} or {BS} Break

    45.8K33

    VBA技术:你需要知道的一些VBA操作形状的代码

    标签:VBA,Shape对象 本文介绍使用VBA创建和操控形状的知识。 在Excel中,可以通过功能区“插入”选项卡“插图”组中的“形状”库按钮在工作表中插入形状。...可以使用形状来可视化数据、在形状中添加文本、作为执行宏代码的按钮,等等。 使用AddShape方法创建形状 要使用VBA在Excel中创建形状对象,必须调用AddShape方法。...下面的VBA代码展示了如何创建2个形状并将它们存储在变量中以便后面引用。...End Sub 确定形状大小 可以使用VBA修改两个属性来更改形状的大小。这两个属性是形状的Width值和Height值,如下图12所示。...如果需要工作表中特定形状类型,可以创建循环来测试AutoShapeType值以筛选结果。

    4.8K20

    常见的复制粘贴,VBA是怎么做的

    例如,在本文包含的VBA代码示例中,源数据所在的单元格区域引用如下所示: Worksheets(“Sample Data”).Range(“B5:M107”) 这个引用不是完全限定的对象引用。...Excel功能区中的复制命令 在使用VBA代码复制单元格区域之前,看看Excel功能区中的“复制”按钮命令。...上述示例1和示例2中都是这种情况,其中,尽管工作表发生了更改,目标仍然是单元格B5到M107。这保证了混合引用继续指向正确的单元格。...相反,它使用单元格F5作为从源工作表复制的混合引用的结果。这将导致(i)错误的结果和(ii)循环引用。...例如,在某些情况下,可能希望:复制包含公式的单元格区域,并在目标单元格区域粘贴值。 这正是上面例子中发生的情况。在这种情况下,可能只希望粘贴值(无公式)。

    12.2K20

    Excel到底有多厉害?

    于是,我又写了一个程序将Excel中的表格输出到Powerpoint中,将一个秘书每次需要数小时才能完成的工作,简化成了一键发布,并可以在Excel中完成对PPT的更新。 ?...因为PPT的模版每次变化不大,我将这些模版记录下来,每周更新的时候只要根据Excel中最新的数据更改PPT中的数据即可。 ?...然后写VBA程序,根据不同的情景、不同的优先级以及不同的权重来调节零售店的覆盖率、销售拜访频率、拜访中的服务深度等多因素,同时设定这几大因素的可接受范围,逐步逼近HC的预设值。 ?...如果没有程序,以前基本是靠人工手动调节来凑结果,而且因为各种情景的不同,还需要多次调节。而通过程序,基本是自动完成,还可智能得设置优先级及权重,无需人工参与。...8 结 语 计算了一下,我在BCG做了三年咨询顾问,大概写了几万行VBA程序(都是自己手工输入的,没有复制拷贝和系统自动生成),每个项目一千至几千行程序不等。

    3.6K71

    VBA代码库09:增强的CELL函数和INFO函数

    本文对其内容进行了整理并分享于此,希望能够有助于VBA代码的学习,同时留存这个自定义函数以备所需。...参数reference,可选,默认值是最后一个发生变化的单元格。 例如,下面的公式: =CELL("filename",A1) 在我的示例工作簿中返回: D:\01....此外,两个参数都声明为ByVal,确保在函数中的更改不会影响到传递给它的参数。函数返回Variant型的结果,表示指定的Target的This的名称。...代码开头的注释部分说明了参数This可以指定的值,可以使用数字或文本来指定。如果This指定为文本,则忽略大小写以及前导和结尾的空格。...例如,公式: =nameof(" book ") 在我的示例中返回结果为: VBACodeLibrary09.xlsm 下面的公式: =nameof("Help") 输出可以在函数中使用的所有长格式文本值

    4.6K10

    Excel编程周末速成班第18课:使用用户窗体创建自定义对话框

    用户窗体的限制 尽管用户窗体是常规窗口,但它缺少许多程序窗口具有的某些功能。特别是: 用户无法调整窗口大小(尽管可以在VBA代码中调整窗口大小)。 窗口没有最小化和最大化按钮。 窗口没有控制菜单。...要更改属性,单击其名称。然后,进行更改的方式取决于特定的属性: 对于枚举属性(可以采用一组预定义值中的任何一个),使用右列中的下拉列表选择值。...1.在VBA编辑器中,选择“插入➪用户窗体”以将新的用户窗体添加到当前工程。 2.在“属性”窗口中,将窗体的Name属性更改为TestForm,并将其Caption属性更改为“用户窗体演示”。...3.输入TestUserForm作为过程名称,然后单击“确定”。空白过程输入到编辑窗口中。 4.将清单18-1中所示的代码输入到该过程中。...VBA编辑器提供了一个视觉设计工具,使你可以创建用户窗体的视觉界面。 通过在VBA代码中调用窗体的Show方法向用户显示窗体。 在窗体的代码中,你可以使用Me关键字来引用窗体。

    11.1K30

    进击的恶意文档之 VBA 进阶之旅

    下面我就以威胁分析员的角度来介绍几种技术 VBA stomping VBA 在 Office 文档中可以以下面三种形式存在 1、源代码: 宏模块的原始源代码被压缩,并存储在模块流的末尾。...Pcodedmp 精准的识别了真正的宏代码,忽略了伪造的 VBA 通过 VBA stomping 原理可知,真正的代码存为了 P-Code,所以 olevba 输出的结果中反编译形式的 VBA 即为真正的代码...虽然这两个属性的内容都是被加密的内容,但是经过实验,将其内容改为任意值(更改时注意长度) ?...会使得 VBA 工程被锁定且不可看,如果只修改 ProjectVisibilityState,VBA 工程目录可看,但单个代码模块不可看 ?...在 vmware 虚拟机中运行结果 ?

    4.6K30

    Workbook工作簿对象方法(一)

    (可以用于区别新建的文件的名称) 将workbooks.add方法生成的新工作簿赋值给了对象变量wb1,将wb1的文件名更改为VBA示例文件" & i & ".xlsx。...(此处用了with语句,可以方便增加其他属性的更改。) 二、工作簿对象open方法 在使用EXCLE文件时,在VBA代码中打开工作簿是通过workbooks集合的open方法。...语法结构如下: workbooks.open(filename) 常用方法很简单下面通过示例来演示,打开我的电脑D盘根目录下的"vba示例.xlsm"文件 。...Not wb1 Is Nothing Then MsgBox "指定Excel文件已打开" Else MsgBox "指定Excel文件未打开" End If End Sub 在代码中通过...指定值为0将不更新外部引用(链接),指定值为1将更新外部引用(链接)但不更新远程引用(链接),指定值为2将更新远程引用(链接)但不更新外部引用(链接),指定值为3将更新外部引用(链接)。

    6.6K40

    Excel编程周末速成班第24课:调试和发布应用程序

    同样,如果用于某些数值计算的代码产生不正确的结果,则也将其视为bug。由于实际上存在无限数量的潜在bug,因此无法列出或描述Excel程序中可能出现的错误。...VBA的调试工具旨在跟踪这两种bugs的原因。 断点 在VBA编辑器中,可以在任何代码行上设置断点。当执行到达该行代码时,VBA进入中断模式,这使你可以执行各种调试任务(稍后将对此进行解释)。...检查变量的最简单方法是在中断模式下。只需将鼠标指针停留在代码中变量的名称上,VBA就会弹出一个带有当前值的小窗口。如果这还不够,VBA提供了更复杂的监视工具。...VBA可以在程序调试期间监视任何变量或表达式的值。监视表达式可以是任何VBA表达式,例如程序变量、对象属性或函数调用。通过设置监视,你可以关注变量或属性的值以查看其是否以及何时更改。...大多数bugs是由于变量取不正确的值和/或程序执行分支不正确造成的。 可以在程序中的任何位置设置断点,以强制程序在该点暂停。 当程序在中断模式下暂停时,可以单步执行代码以查找错误。

    5.8K10

    Excel VBA解读(139): 用户定义函数计算了多次

    问题是计算引擎仅在计算公式/自定义函数之后才执行此重新计算,因此在每次重新计算时包含自定义函数的公式会计算多次。 下面是一个非常简单的示例,你可以在工作簿中试试。...4.在单元格A1中输入1。 5.在单元格A2中输入公式:=Tracer(A1)+1。 6.在单元格A3中输入公式:=Tracer(A2)+1。...A3(其参数单元格A2的值显示为空),然后是单元格A2,接着又是A3,此时显示出其参数单元格A2的正确值。...由函数向导引起的多个用户定义函数重新计算 每当将函数向导与用户定义函数一起使用时,用户定义函数会被多次调用,因为在输入函数的参数时,函数向导使用评估动态显示函数的结果。...只有在输入或更改用户定义函数时,才会重新计算该函数。

    1.8K30

    Python让Excel飞起来:使用Python xlwings实现Excel自动化

    尝试下面的代码,它将允许你将值从Python输入到Excel。...在右侧的代码窗口,输入以下VBA代码。...接下来,保存VBA代码,现在我们要在Excel工作表中创建一个按钮。返回Excel界面,在“开发工具”选项卡,单击“插入->按钮”,并指定刚创建的宏Rand_10。...Excel设置 默认设置预计Python代码和Excel文件为: 在同一目录中 名称相同,但Python文件以.py结尾,Excel文件以.xlsm(或.xlsb)结尾 为了演示,我将把文件命名为“square.py...2.键入用户定义的函数时,单元格中会显示“Object Require”(对象要求)。确保在VBA编辑器菜单“工具->引用”中选取了“xlwings”,并将更改保存到相应的Excel文件中。

    9.7K41

    使用VBA自动化处理表的代码大全1

    标签:VBA 表是Excel最强大的功能之一。使用VBA控制表提供了一种强大的自动化方法。 在Excel中,将数据存储在表中为数据处理提供了极大的方便。...表有一些基本的结构规则,例如表的标题必须是唯一的,只允许一个标题行,这使得表与更复杂的工具能够兼容,例如,Power Query、数据透视表和SharePoint使用表作为数据源或输出方式。...表最早是在Excel2007中引入的,是对Excel 2003中的列表功能的替换。但在VBA中,文档对象模型(DOM)没有随着升级后的功能而更改。...因此,尽管在Excel中使用术语“表”,但在VBA中仍被称为ListObjects。 表的结构 在讲解处理表的VBA代码之前,理解表的结构是非常有用的。...图6 本文接下来的VBA代码详细讲解如何操作所有这些表对象。 未完待续……

    33020

    当AI遇到Excel

    为啥VBA这么厉害,我们却介绍的很少呢? 因为这个级别的功能,是有一点学习门槛的。 我们很难做到在平时短短千把字的文章中,把案例、代码、代码解析和相关的语法知识用图文并茂的方式一次性讲清楚。...但是,坚持学下去,并且成功写出代码应用到工作中的人,大有人在。 他们在自己的公司,一定都是“表神”般的存在。 表神的快乐你能想象吗? 你想象不到。...但是,从基础语法到实际写代码的升级过程中,确实存在困难。 我觉得主要的原因还是基础不牢固以及样例太少。 理解并不代表可以灵活运用。...所以,如果你用同样的问题多次提问,可能每次得到的答案都不完全相同。 使用ChatGPT生成代码也是这样。 那么,对于功底比较弱的小伙伴来说,如果你的提问没获得满意的代码,就多问几次。...并且在以往的文章中,多次分享了这些心得。 今天,多位老师合力完成的《用ChatGPT和VBA一键搞定Excel》就是其中的成果之一。

    33020

    如何将重复工作实现自动化?

    我一般都是嘴角莫名的上扬,露出《肖申克救赎》里主人公安迪的“天台式神秘微笑”,“那只能是VBA了”。 1.什么是VBA?...用大白话说就是,编辑一段小程序在Excel上自动运行,节省更多时间玩农药。 2.VBA有什么用? 记得以前部门招聘新人,拿到他们的简历,感觉大家都差不多。可是,公司只招1个人,只能优中择优。...案例2:批量修改所有文件名 其实工作中有很多类似这样的重复工作,例如批量更改文件名称、批量汇总多个工作表、批量汇总多个工作簿、自动比对数据、批量生成多个Excel文件等等,都可以用VBA自动化解决。...(2)VBA程序的文件后缀为“.xlsm” (3)别看上面的VBA代码,密密麻麻,其实没那么复杂。1个仅学习1周的同学都可以做出,那么实用又好看的分析表格。我觉得,你一定也可以。...这次我们知道了什么是VBA、有什么用、如何使用,下次我们聊聊如何写出案例中的VBA代码。

    2.9K10

    如何将重复工作实现自动化?

    我一般都是嘴角莫名的上扬,露出《肖申克救赎》里主人公安迪的“天台式神秘微笑”,“那只能是VBA了”。 1.什么是VBA?...用大白话说就是,编辑一段小程序在Excel上自动运行,节省更多时间玩农药。 2.VBA有什么用? 记得以前部门招聘新人,拿到他们的简历,感觉大家都差不多。可是,公司只招1个人,只能优中择优。...案例2:批量修改所有文件名 其实工作中有很多类似这样的重复工作,例如批量更改文件名称、批量汇总多个工作表、批量汇总多个工作簿、自动比对数据、批量生成多个Excel文件等等,都可以用VBA自动化解决。...(2)VBA程序的文件后缀为“.xlsm” (3)别看上面的VBA代码,密密麻麻,其实没那么复杂。1个仅学习1周的同学都可以做出,那么实用又好看的分析表格。我觉得,你一定也可以。...这次我们知道了什么是VBA、有什么用、如何使用,下次我们聊聊如何写出案例中的VBA代码.

    26230

    当Python遇到Excel后,将开启你的认知虫洞

    通过这种方式,可以将系统中的数据按着一定的格式直接传输到Excel中,给用户提交的是包含表格数据的Excel文档。 反客为主方式:这种方式将Excel作为主体。...不过这些库基本是只是生成Excel文件,并不能更好地利用VBA以及更高级的功能。...尽管这种方式从表面上看可以直接在Excel中像使用VBA一样使用这些编程语言,但从本质上看仍然是直接写xlsx文件。功能其实与第1种方式相同,因为这并不是官方支持的功能。...结果真是这样吗? 很久以前,我听过一个关于微软的故事(相信很多人也听过),在微软有一个几十人的团队,花了好几个月还没完成一个项目,听说是遇到了某些难题。...用Python替代VBA 目前微软官方还没有将Python作为VBA的替代品,倒是将JavaScript作为了另外一个选择(office.js),不过可以利用xlwings做一个折中。

    3.6K31

    VBA:正则表达式(1) - 基础篇

    正则表达式,常被用来检验、替换符合某个模式(规则)的字符串,在代码中常缩写为regexp。VBA中并没有直接提供正则表达式的对象,需要借助VBScript的正则对象。...(2)匹配到的所有对象放在MatchCollection集合中,这个集合对象只有两个只读属性: Count:匹配到的对象的数目; Item:集合的又一通用方法,需要传入Index值获取指定的元素。...一般,可以使用ForEach语句枚举集合中的对象。集合中对象的类型是Match。 (3)Match对象有以下几个只读的属性: FirstIndex – 匹配字符串在整个字符串中的位置,值从0开始。...Length – 匹配字符串的长度。 Value – 匹配的字符串。 SubMatches – 集合,匹配字符串中每个分组的值。作为集合类型,有Count和Item两个属性。 (4).*?...一个匹配以后,就往下进行,所以不会进行回溯,具有最小匹配的性质。 (5).*具有贪婪的性质,匹配到不能匹配为止,根据后面的正则表达式,会进行回溯。 (6)+匹配一次或多次前面的分组。

    3.3K20
    领券