写在开头的话:本系列从第133篇开始的22篇文章,都是翻译改编自fastexcel.wordpress.com的Making your VBA UDFs Efficient系列,可能有点高深晦涩,但确实都是好的VBA用户自定义函数编程细节技巧和经验。对于大多数人来说,你可以略过这些内容,因为我们只需懂得基础的VBA用户自定义函数知识就足够了。对于想深入研究VBA的人来说,还是值得研究和试验的。我刚开始看到这些文章的时候,一是水平有限,看不大懂,也觉得没有什么必要,所以一直收藏着。然而,随着自已研究VBA的深入,不由得佩服老外对VBA研究的深入,此时刚好Excel VBA解读系列又写到自定义函数这里,正好拿出来,边研究并翻译分享给大家。如果对这些内容没有兴趣的朋友,可以略过,免得浪费时间。
在CCell类模块中,创建了一个由4个成员构成的公共枚举常量,每个枚举成员代表一种单元格类型,其值分别默认为0、1、2、3。使用枚举成员可以增强代码的可读性和可维护性,利用DescriptiveCellType属性可将枚举成员的值转换成易于理解的文本。
①在“文件”选项卡中单击“选项”按钮,打开"Excel选项”对话框。在左侧类别列表中单击“公式”。
Q:工作表同一行中每三个单元格同时只能有一个单元格显示数据。如下图1所示,在单元格区域B6:D6中,如果在单元格B6中输入了数据,那么单元格C6和D6中的内容就会被清除;如果在单元格C6中输入了数据,那么单元格B6和D6中的内容会被清除;如果在单元格D6中输入了数据,那么单元格B6和C6中的内容就会被清除。同样,对于单元格区域E6:G6也是如此,H6:J6也是如此……,依此类推。并且,下面的第7行至第20行也都是如此。该如何实现?
类模块具有引发事件的能力,这也是它的另一个强大的功能。我们可以定义自已的事件,并在代码中引发这个事件,其他类模块也可以捕获这些自定义的事件并作出相应的响应。
在VBA中,我们经常会遇到需要检查某个单元格区域是否为空的情形。我们可以使用下面程序中的代码来检查单元格区域是否为空。
>移动到当前数据区域的边缘:CTRL+ 箭头键 移动到行首:HOME 移动到工作表的开头:CTRL+HOME 移动到工作表的最后一个单元格。:CTRL+END 向下移动一屏:PAGE DOWN 向上移动一屏:PAGE UP 向右移动一屏:ALT+PAGE DOWN 向左移动一屏:ALT+PAGE UP 移动到工作簿中下一个工作表:CTRL+PAGE DOWN 移动到工作簿中前一个工作表:CTRL+PAGE UP 移动到下一工作簿或窗口:CTRL+F6 或 CTRL+TAB 移动到前一工作簿或窗口:CTRL+
我们说,这组数据有6个不同值:a,b,c,d,e,f;有3个唯一值:c,d,f,因为它们在列表中只出现了1次。
本文为知乎答主宇轩原创,CDA数据分析师已获得授权 这里正在更新完毕最常用的快捷键和最完整的EXCEL快捷键,并且把最有用的都突出显示了。 快捷键的内容分三类: 1.F键:与F1-F12组合快捷键 2.Ctrl组合键 3.其他有用的快捷键 F键常用推荐 F1 :显示“Excel 帮助”任务窗格。(重要) Alt+Shift+F1/Shift+F11 :可插入新的工作表。 Shift+F2 :可添加或编辑单元格批注。(重要) Shift+F3 :显示“插入函数”对话框。 F4 :重复上一个命令或操作,在公
方法: 直接调用invokeCode,入参为已定义好的DataTable,出参为去重后的DataTable,代码如下
5.点击确定,便得到了如下结果,excel 对值大于 60 的单元格进行了突出显示。
这里,我们不再像《一起学Excel专业开发26:使用类模块创建对象5》中那样,在CCells类模块中引发ChangeColor事件,而是创建一个触发类模块来取代其引发事件。这里将创建4个触发类的实例,分别对应于4种不同的单元格类型,同时为每个Cell对象分配一个适当的实例,这意味着每个Cell对象只能接收一种消息。
1.<字符串>为文本字符串或者对包含文本字符串的单元格的引用,是要与<模式>相比较的字符串,数据类型为String型。
下面图1是示例数据。当然,为了演示起见,我只是列举了少量数据,实际上这个列表可能会非常长。
下面的这段代码来自于TheSpreadsheetGuru.com,类似数据透视表中的双击功能,可只显示组成SUMIFS函数结果的数据。代码如下:
定制模块行为 (1) Option Explicit ‘强制对模块内所有变量进行声明 Option Private Module ‘标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text ‘字符串不区分大小写 Option Base 1 ‘指定数组的第一个下标为1 (2) On Error Resume Next ‘忽略错误继续执行VBA代码,避免出现错误消息 (3) On Error GoTo ErrorHandler ‘当错误发生时跳转到过程中的某个位置 (4) On Error GoTo 0 ‘恢复正常的错误提示 (5) Application.DisplayAlerts=False ‘在程序执行过程中使出现的警告框不显示 (6) Application.ScreenUpdating=False ‘关闭屏幕刷新 Application.ScreenUpdating=True ‘打开屏幕刷新 (7) Application.Enable.CancelKey=xlDisabled ‘禁用Ctrl+Break中止宏运行的功能 工作簿 (8) Workbooks.Add() ‘创建一个新的工作簿 (9) Workbooks(“book1.xls”).Activate ‘激活名为book1的工作簿 (10) ThisWorkbook.Save ‘保存工作簿 (11) ThisWorkbook.close ‘关闭当前工作簿 (12) ActiveWorkbook.Sheets.Count ‘获取活动工作薄中工作表数 (13) ActiveWorkbook.name ‘返回活动工作薄的名称 (14) ThisWorkbook.Name ‘返回当前工作簿名称 ThisWorkbook.FullName ‘返回当前工作簿路径和名称 (15) ActiveWindow.EnableResize=False ‘禁止调整活动工作簿的大小 (16) Application.Window.Arrange xlArrangeStyleTiled ‘将工作簿以平铺方式排列 (17) ActiveWorkbook.WindowState=xlMaximized ‘将当前工作簿最大化 工作表 (18) ActiveSheet.UsedRange.Rows.Count ‘当前工作表中已使用的行数 (19) Rows.Count ‘获取工作表的行数(注:考虑向前兼容性) (20) Sheets(Sheet1).Name= “Sum” ‘将Sheet1命名为Sum (21) ThisWorkbook.Sheets.Add Before:=Worksheets(1) ‘添加一个新工作表在第一工作表前 (22) ActiveSheet.Move After:=ActiveWorkbook. _ Sheets(ActiveWorkbook.Sheets.Count) ‘将当前工作表移至工作表的最后 (23) Worksheets(Array(“sheet1”,”sheet2”)).Select ‘同时选择工作表1和工作表2 (24) Sheets(“sheet1”).Delete或 Sheets(1).Delete ‘删除工作表1 (25) ActiveWorkbook.Sheets(i).Name ‘获取工作表i的名称 (26) ActiveWindow.DisplayGridlines=Not ActiveWindow.DisplayGridlines ‘切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮 (27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings ‘切换工作表中的行列边框显示 (28) ActiveSheet.UsedRange.FormatConditions.Delete ‘删除当前工作表中所有的条件格式 (29) Cells.Hyperlinks.Delete ‘取消当前工作表所有超链接 (30) ActiveSheet.PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 ‘将页面设置更改为横向 (31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName ‘在页面设置的表尾中输入文件路径 ActiveSheet.PageSetup.Le
累加器是一个或多个单元格,用于保存输入的数值的总和。它们可以是单个单元格,如果A1=6,并且用户在A1中输入2,则显示的结果为8。或者可以是两个单元格,比如说,在A1中输入的数字会立即与B1中的值相加。
动态单元格区域是指当添加或删除源数据时,或者随着包含单元格区域的公式被向下复制时根据某条件更改,可以自动扩展或收缩的单元格区域,可以用于公式、图表、数据透视表和其他位置。
大名鼎鼎EXCEL江湖上谁人不知,谁人不晓呀,纵使你没见过EXCEL,也见过数据在跑吧?可惜的是,经常用EXCEL表哥表妹,甚至操作六七年 的江湖老手,或多或少还是犯了些操作上的小错误,不应该呀不应该。下面,列举一些在EXCEL操作上常见的一些普遍现象,你认为哪种操作最搞笑?大家来排个名吧? 1.移动选择 打开一个表,想要查看最后一行是第几行,很多童鞋都是一直按方向箭,或者不厌其烦拖动滚动条,这是一个非常不好的习惯,得改。童鞋,还记得键盘上的 CTRL+DOWN吗?可以快速跳转到该列数据末尾处,还有CT
导语:本文为《精通Excel数组公式14:使用INDEX函数和OFFSET函数创建动态单元格区域》的后半部分。
我们经常会看到一些工作表,含有隐藏的行或列。而这些隐藏行或列中,往往存储着一些不想让用户看到的数据。这些数据可以让Excel或者VBA程序使用,方便完成一些高级操作,例如检查用户输入是否存在错误、存储数据有效性列表项、计算的中间值、特殊的常量,等等。
Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库,基于 ECMA-376,ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Microsoft Excel™ 2007 及以上版本创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写 API,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。入选 2020 Gopher China - Go 领域明星开源项目(GSP)、2018 年开源中国码云最有价值开源项目 GVP (Gitee Most Valuable Project),目前已成为 Go 语言最受欢迎的 Excel 文档基础库。
其控制的颗粒度达到单元格级别,就如一张大画布,横竖画上格子线,任意发挥,所以有网传某某人用Excel来作画的惊艳之举(当然不一定最佳的使用场景,有比Excel更能胜任的专业绘画软件)。
FREQUENCY函数是一个较难掌握的Excel工作表函数,这篇文章收集整理了一组运用FREQUENCY函数的公式,用来统计不同值、唯一值和连续值的数量,希望能够帮助有兴趣的朋友更进一步熟悉掌握FREQUENCY函数。
Excelize 是 Go 语言编写的用于操作电子表格办公文档的开源基础库,基于 ISO/IEC 29500、ECMA-376 国际标准。可以使用它来读取、写入由 Microsoft Excel、WPS、Apache OpenOffice、LibreOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式,高度兼容带有样式、图片(表)、透视表、切片器等复杂组件的文档,并提供流式读写支持,用于处理包含大规模数据的工作簿。可应用于各类报表平台、云计算、边缘计算等系统。
使用表单的API处理数据 你可以将数据以有格式或无格式字符串或者数据对象的形式填充到单元格中。将数据填充到单元格的最好方式取决于你想添加字符串数据还是数据对象,以及你想添加数据到单一的单元格还是某个范围内的所有单元格。 举例来说,如果你使用的数据来自用户的文本框中,你可能想要添加由Spread控件解析的字符串数据。如果你想要添加多个值,并想要直接将它们添加到数据模型中,可以以对象的方式添加它们。 下表汇总了在表单级别添加数据的方法。 数据描述 单元格数目 方法名 具有格式的字符
一、让数据按需排序 如果你要将员工按其所在的部门进行排序,这些部门名称既的有关信息不是按拼音顺序,也不是按笔画顺序,怎么办?可采用自定义序列来排序。 1.执行“格式→选项”命令,打开“选项”
本文为简书作者傲看今朝原创,CDA数据分析师已获授权。 查找与替换是Excel中最为简单实用的功能之一,几乎用过Excel的人都知道这个功能,也都会简单使用这个功能。然而,今天介绍的这3个技巧却有99
FREQUENCY函数非常简单,但非常强大且功能丰富。本文介绍这个函数的基本用法,后续文章你将会看到该函数对困难的问题提供的令人惊叹的解决方案。
公式使电子表格“活”了起来。有时,我们会在一个单元格或者多个单元格中应用公式,但在很多情况下,我们需要将公式应用于整列(或者一列中的许多单元格)。为此,Excel提供了多种不同的方法,你只需使用鼠标单击几次或者使用快捷键,就可以完成这样的操作。
今天介绍的单元格对象方法在平时使用excel也是常规的操作,如单元格的复制、剪切、删除、清除内容等。只是在VBA编程中是通过代码的形式来运行。
在前面的几篇文章中,我们自定义的函数使用定义为Range的参数来从Excel工作表中获取数据,例如:
SERIES公式控制着绘制Excel图表的数据,并且只在图表中有效,它不是真正的公式但可以像Excel公式一样在公式栏对其进行编辑。
技巧1、单元格内强制换行 技巧2、锁定标题行 技巧3、打印标题行 技巧4、查找重复值 技巧5、删除重复值 技巧6、快速输入对号√ 技巧7、万元显示 技巧8、隐藏0值 技巧9、隐藏单元格所有值。 技巧10、单元格中输入00001 技巧11、按月填充日期 技巧12、合并多个单元格内容 技巧13、防止重复录入 技巧14、公式转数值 技巧15、小数变整数 技巧16、快速插入多行 技巧17、两列互换 技巧18、批量设置求和公式 技巧19、同时查看一个excel文件的两个工作表。 技巧20:同时修改多个工作表 技巧21:恢复未保存文件 技巧22、给excel文件添加打开密码 技巧23、快速关闭所有excel文件 技巧24、制作下拉菜单 技巧25、二级联动下拉 技巧27、删除空白行 技巧28、表格只能填写不能修改 技巧29、文字跨列居中显示 技巧30、批注添加图片 技巧31、批量隐藏和显示批注 技巧32、解决数字不能求和 技巧33、隔行插入空行 技巧34、快速调整最适合列宽 技巧35、快速复制公式 技巧36、合并单元格筛选
Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。
大家好,又见面了,我是你们的朋友全栈君。 本文转载至:https://baijiahao.baidu.com/s?id=1590204478648348952&wfr=spider&for=pc,
这篇文章是本系列的第一篇,选择性汇总了EXCEL的常用且重点的模块和公式,用作内部员工EXCEL基础操作培训,以帮助表格基础薄弱的同事快速熟悉常用操作,提升工作效率。现将内容分享,作为数据分析基础的第一篇。
导语:继续研究来自于excelxor.com的案例。这个案例不用数组公式就能解决,但仍有很多值得学习的技术。
需要弄明白的是,空字符串与空单元格不同。空单元格中没有任何内容,空字符串是不显示任何结果的公式的结果。这通常是通过使用两个双引号来实现的,它们之间没有任何内容:
数组函数是可以提供多个值的Excel内置函数。下面列出了8个Excel内置的数组函数:
在本系列中,大部分内容都是在阐述特定数组公式如何工作的逻辑,但是假设你有一个大型的数组公式,却不知道它是如何工作的,你该怎么办?你已经学到了许多技术,弄清楚为什么一个公式正在做它该做的事。
Excel用户经常发现在公式中使用整列的引用很方便,这样可避免每次添加新数据时都必须调整公式。因此,当编写用户自定义函数时,可能会使用:
有时候,可能有一组数据,需要删除特定文本字符串之前的所有文本。例如,下图1所示的数据中包含员工的姓名和电话号码。
本次的练习是:这个练习题与本系列上篇文章的练习题相同,如下图1所示,不同的是,上篇文章中将单元格区域A1:D6中的数据(其中包含空单元格)转换到单独的列(如图中所示的单元格区域G1:G13)中时,是以行的方式进行的,即先放置第1行中的数据、再放置第2行……依此类推。这里,需要以列的方式进行,即先放置第1列中的数据、再放置第2列中的数据……依此类推,最终结果如图中所示的单元格区域H1:H13,如何使用公式实现?
本次的练习是:如下图1所示,单元格区域A1:D6中是一系列数据,其中包含空单元格,现在要将它们放置到一列中,并删除空单元格,如图中所示的单元格区域G1:G13,如何使用公式实现?
有时候,在一列数据中有许多空单元格,导致数据不连续,我们需要剔除这些空单元格,让数据区域连起来。
Excel是我们工作中经常使用的一种工具,对于数据分析来说,这也是处理数据最基础的工具。
本次的练习是:一个有趣的问题,在一张简单的表中追踪每日体重的增加或减少量。如下图1所示,只需计算当天与前一天的差额即可,在单元格D6中使用公式:
我们可能熟悉使用INDEX、SMALL等在给定单列或单行数组的情况下,返回满足一个或多个条件的值的列表。这是一项标准的公式技术。
领取专属 10元无门槛券
手把手带您无忧上云