很多人无法理解这个函数,我开始也一样。但是学了VBA之后,我发现这尼玛就是个VBA函数,就像SUMPRODUCT函数是一个伪装成普通函数的数组函数一样。
写在开头的话:本系列从第133篇开始的22篇文章,都是翻译改编自fastexcel.wordpress.com的Making your VBA UDFs Efficient系列,可能有点高深晦涩,但确实都是好的VBA用户自定义函数编程细节技巧和经验。对于大多数人来说,你可以略过这些内容,因为我们只需懂得基础的VBA用户自定义函数知识就足够了。对于想深入研究VBA的人来说,还是值得研究和试验的。我刚开始看到这些文章的时候,一是水平有限,看不大懂,也觉得没有什么必要,所以一直收藏着。然而,随着自已研究VBA的深入,不由得佩服老外对VBA研究的深入,此时刚好Excel VBA解读系列又写到自定义函数这里,正好拿出来,边研究并翻译分享给大家。如果对这些内容没有兴趣的朋友,可以略过,免得浪费时间。
▼ 下午在浏览论坛的时候,刚好看到秋叶老师的一个图表教程,风格是半圆型饼图,用VBA控制。 查看了一下后台的VBA代码,有点小复杂,不过勉强能看懂,自己试了一把,确实可行。 Sub 动起来()
下面是2020年11月12日发布的一些简单的ExcelVBA问题的答案,是不是和你想的一样。
在处理Excel表格的时候,偶尔会碰上这种需要,定位选中单元格区域内的空白单元格,然后让空白的单元格等于它上面的单元格,一般在Excel是这样操作的:
Excel有一个有趣且非常有效的技巧叫做隐式交集(Implicit Intersection),允许有效地使用大的命名区域和整列引用。
Excel里有个分列的功能,能根据单元格中指定的符号,把单元格拆分为多个单元格,并按列存放。
对于大多数人来说,使用Excel来做的工作就是在单元格中输入数据,进行一些格式化制作成报表输出,在这个过程中,可能会使用一些公式,可能会使用图表展现数据,也可能会使用VBA进行一些自动化数据处理工作。
Excel数组公式能够做很多令人惊讶的事情。除了在输入完后要按Ctrl+Shift+Enter组合键外,与普通公式一样。本文主要研究使用用户定义函数的数组公式。
本次的练习是:给定一个单元格区域,要求使用公式得到该区域中出现重复次数最多的数据的重复次数。如下图1所示,在单元格区域A1:F1中,重复次数最多的数据是“完美Excel”,重复次数是3。
会使用Excel的人都知道数字和文本是应该分开列来存储的,可是总是会碰上一些人仅仅是把Excel当作制作表格的一个简单工具,至于使用函数进行数据处理是根本不会的!
案例:在「单元格B3」输入不同的行号,然后点击「显示答案」按钮,程序就会自动计算右边相应题目的答案,如何实现?
如果要统计某单元格中指定的某特定字符的数量,可以使用LEN/SUBSTITUTE函数组合的经典公式(假设字符串位于单元格B2):
经常用Excel的人,应该会经常需要把Excel里的数据复制到Word等其他软件中,复制过去经常会碰上格式上的问题。
例如,在单元格A1中的内容为“This is<just> a test”,单词“just”位于一对尖括号中。现在想要将“just”提取出来,并将其放置在相邻的单元格B1中,如何使用VBA代码来实现这样的操作?
我们经常会在VBA代码中看到Application.Caller,它到底起什么作用,往往让人感到模糊。下面,我们就来详细讲讲,对其有更深入的理解。
文章背景: 工作中,有时需要判断单元格区域内是否存在合并单元格,这时,可以用到Range.MergeCells属性。
在文章《有趣!你会检查单元格是否包含日期吗?》中,我们使用VBA自定义函数,简单地解决了检查单元格中是否包含日期的问题。
在《Excel实战技巧15:在工作表中查找图片》中,我们使用名称和INDEX/MATCH函数组合,在工作表中显示与所选择名称相对应的图片。在《Excel实战技巧21:在工作表中查找图片(方法2)》中,使用名称和OFFSET/COUNTA/MATCH函数来实现相同的效果。在《Excel实战技巧22:在工作表中查找图片(使用VBA代码)》中,使用VBA代码来达到根据名称显示相应图片的效果。本文实现的效果相同,实现的方法类似,但可能更简单些。
在Excel表格里,合并单元格会给使用过程带来很多麻烦,但是有时候为了排版好看,又需要用到合并的功能。
还有一个“秘密”就是,也可以在定义的单元格区域名称中使用EVALUATE,因此有一些方法可以在不使用VBA的情况下访问单元格公式中EVALUATE的功能。
文章背景: 上文(参见文末的参考资料[1])提到,创建了一个自定义函数,可以获取指定路径下各个文件的最新的修改日期。另外,提供了一份VBA代码,可以遍历各个单元格,假装对单元格内的内容进行编辑,借助Application.OnTime函数定时执行该程序。
可以给一个常量值定义名称,如下图1所示,定义常量VersionNum表示数字1.0。
在Excel中,数据只有文本,数值,日期值,逻辑值和错误值五种类型。但是在VBA中,数据类型跟Excel不完全相同。根据数据的特点,VBA将数据分为布尔型(boolean),字节型(byte),整数型(integer),单精度浮点型(single),双精度浮点型(double),货币型(currency),小数型(decimal),字符串型(string),日期型(date),对象型等等
大家知道,Excel将日期存储为数字,只是显示的是日期格式,例如,Excel单元格中显示的是2022年5月10日,但实际上存储的是数字44691。
有时候,我们可能想要知道某一区域中是否输入了重复值,这样好做进一步的处理。下面的VBA自定义函数可以帮助我们作出这样的判断:
使用Excel如果经常处理英文资料的话,应该会经常碰到需要转换大小写的情况,Excel提供了UPPER、LOWER等转换函数。
今天从WPS官方邓华老师那里获得了WPS内测安装包,支持WPS表格的动态数组公式,测试了一轮,还是比较满意,没有像之前跟进Excel365新函数那样,只是部分支持,这一次,基本上已经和Excel365的体验一致。
如果在其他应用中我们要选择背景色,但却不知道其RGB值,那么就可以先在Excel单元格中设置想要的背景色,然后使用这几个函数获取其RGB值,这样就可以应用到其他程序中了。
在《Excel实战技巧15:在工作表中查找图片》中,我们使用名称和INDEX/MATCH函数组合,在工作表中显示与所选择名称相对应的图片。在《Excel实战技巧21:在工作表中查找图片》中,使用名称和OFFSET/COUNTA/MATCH函数来实现相同的效果。在《Excel实战技巧22:在工作表中查找图片(使用VBA代码)》中,使用VBA代码来达到根据名称显示相应图片的效果。在《Excel实战技巧85:从下拉列表中选择并显示相关的图片》中,以更为简单的方式实现的了显示图片的相同效果。本文将在显示图片的同时显示相关的文字说明。
之前的文章中介绍过这个技巧,这是在mcgimpsey.com中看到的,也辑录于此,供参考。
大家好,后面开始将介绍VBA对象模型部分内容,会引入许多新的概念,尽量循序渐进的介绍相关内容,力求深入浅出。
选择零件号,显示相应的零件图;选择员工姓名,显示该员工相片,等等,都是选择单元格中的值而显示相应的图片的例子,也就是说基于单元格的值查找并显示对应的图片,单元格的值改变,图片也自动改变。效果如下图1所示。
VBA数组还是很强大的,通过对单元格区域数据的读取,赋值给数组,再利用数组函数或者调用Excel内置函数进行相关处理。另外,数组在赋值计算效率上面也是非常高的,大家可以自行尝试下。
数组这种数据结构,应该在绝大多数语言都有实现,使用起来直接使用下标就可以获取想要的数据,在编程过程中几乎是必不可少的。
通常,Excel默认启用了记忆式键入功能,如下图1所示,在“Excel选项”对话框的“高级”选项卡中,默认勾选了“为单元格值启用记忆式键入”复选框。这为我们在工作表中的数据输入提供了便利。
https://docs.microsoft.com/zh-cn/office/vba/language/glossary/vbe-glossary#array
程序员学习程序开发都喜欢以输出“hello world”为第一个程序,我们也学习一下这种模式,因为Excel VBA主要是操作Excel,所以我们的第一个程序目的:在A1单元格输入“hello Excel VBA”。
如果不使用VBA,可以使用Excel的“定位”功能来实现。如下图3所示,单击功能区“开始”的“编辑”组中的“查找和选择——定位条件”,弹出“定位条件”对话框。在该对话框中,选取“公式”中“错误”前的复选框,如下图3所示。
本文介绍的自定义函数来源于wellsr.com,以Excel的CELL函数和INFO函数为样板,可直接返回工作表或工作簿的名称或工作簿路径,以及与Excel及其操作环境有关的各种信息。本文对其内容进行了整理并分享于此,希望能够有助于VBA代码的学习,同时留存这个自定义函数以备所需。
该文摘要总结:通过分析一个VBA程序,讲解了ExcelVBA编程中的一些基本概念和常用函数,包括循环、条件语句、数组、字符串和数字操作函数等。通过实际代码示例,让读者更好地理解和掌握ExcelVBA编程的基本方法和技巧。
本文主要讲解设置工作表单元格或单元格区域格式的VBA代码,包括设置字体、数字格式、文本对齐、填充单元格背景色、设置单元格边框等。
有朋友留言说,微软早就在Office里也支持JS了,比如Script Lab……其实关于Script Lab,二年前我们就聊过一次。今天就再大家详细聊一下,这主要包含了以下内容:
注意,当求和的单元格区域中单元格格式发生更改时,不会触发任何事件;而使用Application.Volatile语句,每当在工作表上的内容更改时,单元格都会重新计算。这意味着,仅对求和单元格区域中的单元格设置加粗格式,使用该自定义函数求和的值不会改变,除非按F9键强制计算,或者在工作表中输入内容导致工作表重新计算。
示例:数据保存在B列,其格式为规格1*数量1 + 规格2*数量2 + ...。现在需要统计数量总和,如C列所示。例如,单元格B3中,包装明细为100*3+115*1,对应的包装个数就是3+1。
本文将向你展示如何使用Python xlwings库自动化Excel。毋庸置疑,Excel是一款非常棒的软件,具有简单直观的用户界面,而Python是一种强大的编程语言,在数据分析方面非常高效。xlwings就像胶水一样,将两者连接到一起,让我们能够同时拥有两者最好的一面。
Excel用户经常发现在公式中使用整列的引用很方便,这样可避免每次添加新数据时都必须调整公式。因此,当编写用户自定义函数时,可能会使用:
今天要跟大家分享的是数据地图系列的第九篇——excel(VBA)数据地图! 关于VBA在excel中的应用非常广泛,本篇仅仅是给出示例代码,不会对基础操作做太过详细的讲解。 要说为什么手动操作都可以完成的地图填充,为啥要弄得这么复杂。其实理由很简单,就是效率,可以以一种一劳永逸的方式节省时间、提高效率。 否则你只能每一次都手动操作,重复劳动,想想一下,靠简单几句的代码,就可以瞬间完成批量的图形填充效果,那么花一点儿心思做一套模板(可以循环使用),真的是太值得了。 下面是VBA数据地图的详细制作步骤: 1
于是,我准备把Excel VBA写成一个系列免费教程,撸完这个系列你也是VBA界的黑山老妖了。
直到 90 年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用EXCEL的宏语言来使EXCEL自动化,使用WORD BASIC使WORD自动化,等等.微软决定让它开发出来的应用程序共享一种通用的自动化语言——–Visual Basic For Application(VBA),可以认为 VBA 是非常流行的应用程序开发语言VASUAL BASIC 的子集.实际上VBA是”寄生于”VB应用程序的版本.VBA和VB的区别包括如下几个方面:
领取专属 10元无门槛券
手把手带您无忧上云