学习Excel技术,关注微信公众号: excelperfect 本次练习题 如下图1所示的工作表,在单元格区域A2:F2中放置的是要查找的数值;在列H至列BF、行9至行30是被查找的区域,这个区域分17...个小区域,每个区域3列,其单元格中要么为空,要么放置着一些数值。...图1 现在,要在这17个小区域中查找单元格区域A2:F2中的值并将找到的数值的个数输入到其下方第32行的单元格中。如何使用VBA代码实现? VBA代码 先给出代码,再细细解释。...代码: WorksheetFunction.CountIf(rng(i),Cells(2, j)) 使用工作表函数COUNTIF函数来统计单元格区域中指定值的数量。...最后得到每个小区域中包含的数值的个数,然后将得到的个数值输入到第32行中相应单元格中。 代码中的外层循环遍历每个小区域,内层循环遍历A2:F2中的值。
文章背景:在工作中,有时需要同时引用多个不连续的单元格区域,然后进行相应的操作(如改变单元格底色,增加外框线等)。...在VBA中有两种引用方式。...Range("D4:E5"), Range("G4:H5")) 示例: Option Explicit Sub SelectDisContinous(): '已知目标区域的情况下,选中不连续的多个区域...Sub UnionDisContinous(): '确定目标区域后,选中不连续的多个区域 Dim obj_range As Range, num As Integer...Range(Cells(num, 7), Cells(num + 1, 8))) obj_range.Interior.ColorIndex = 22 End Sub 参考资料: [1] VBA
标签:VBA 下面的VBA自定义函数演示了如何对应用了粗体格式的单元格求和。...ErrHandler: '检查是否溢出 If Err.Number = 6 Then SumBold = CVErr(xlErrNum) Resume Continue End Function 注意,当求和的单元格区域中单元格格式发生更改时...,不会触发任何事件;而使用Application.Volatile语句,每当在工作表上的内容更改时,单元格都会重新计算。...这意味着,仅对求和单元格区域中的单元格设置加粗格式,使用该自定义函数求和的值不会改变,除非按F9键强制计算,或者在工作表中输入内容导致工作表重新计算。...这个程序也提供了一个模板,可以稍作修改对其它格式设置的单元格来求和
下面的代码能够给当前工作表中所选择的单元格区域绘制红色的矩形边框。 首先,选取想要绘制边框的所有单元格区域,可以在选择单元格区域的同时按住Ctrl键,从而选取多个单元格区域。...然后,运行下面的代码,VBA会自动给所选单元格区域的周边绘制红色的边框,效果如下图1所示。...tempShape Is Nothing '重命名形状 redBox.Name = "RedBox_" & i Next End Sub 如果要删除刚才绘制的红色矩形框,也可以使用VBA...Left(shp.Name, 7) = "RedBox_" Then '删除这个形状 shp.Delete End If Next shp End Sub 可以看到,这种情形使用VBA...代码很方便,避免了你选择单元格区域然后进行一系列格式设置的频繁操作。
1、需求: 有1个工作簿,多个工作表,格式一致,按某列作为关键字(具有唯一性),汇总数据,以工作表名称作为汇总后的新列名称,并生成1列合计。...3、代码实现 简单分析: 读取数据 根据姓名确定数据要存放的行号,并累加到合计列 输出 个人碰到的很多VBA实际问题基本都可以按这3步完成,所以我习惯首先把代码的框架搭好,而且我基本固定按这个模式了...Cols End Enum Type DataStruct Src() As Variant Rows As Long Cols As Long End Type Sub vba_main...d) Then Exit Sub Next 输出结果我们需要姓名、合计、还有除汇总表之外每一个表都要生成的1列: Enum PosResult 序号 = 1 姓名 '多个表的列...姓名 科室 工资 KeyCol = 姓名 Cols = 工资 End Enum Enum PosResult 序号 = 1 姓名 '多个表的列
要做这个Function,我们需要传递2个参数: RngSrc:要统计的单元格范围 RngCriteria:标有要统计的颜色的单元格 第1个参数肯定是必须的,设置第2个参数的目的是因为,单元格底色所代表的数字我们正常是记不住的...,传入1个设置了底色的单元格参数是比较方便的,实现的代码很简单: 'RngSrc 要统计的单元格范围 'RngCriteria 标有要统计的颜色的单元格 Public Function
【问题】:我们在工作中,有时候要判断人家输入单元格是内容中的数据是首字母含有字母还是内容其中含有字母。...A-Za-z]*" Then isABCin = True Else isABCin = False End If End Function =====下面是应用...Range("a1")) Cells(2, 3) = 是否字母(Range("a1")) Cells(3, 3) = isABCin(Range("a1")) End Sub =====下面是应用...Range("a1")) Cells(2, 3) = 是否字母(Range("a1")) Cells(3, 3) = isABCin(Range("a1")) End Sub =====下面是应用
在数据处理时,单元格公式中往往要引用原始数据源。多人操作时,每个人的操作习惯不同,如果数据源的单元格不小心被人为移动或删除,会导致单元格公式引用失效,产生#REF! 错误。...,本文通过VBA代码进行一定程度的规避。...示例:针对单个共享工作簿,关闭单元格自动填充功能(避免单元格被移动);针对工作簿中源数据所在的工作表,禁用剪切功能。...how-do-i-completely-disable-drag-n-drop-features-in-one-workbook-not-all-in-excel.739294/) [2] Disabling "cut" from excel with vba...(https://stackoverflow.com/questions/41680490/disabling-cut-from-excel-with-vba)
标签:VBA 这是在exceloffthegrid.com中看到的一个案例,一个非常有用的节省时间的宏:在单元格之间分配值。...下面的VBA代码采用第四个选项。...可以使用公式手动执行此操作,但这将非常耗时;相反,下面的VBA代码只需要2秒钟。...要分配的值:", _ Title:="分配值", Type:=1) '用户单击取消 If apportionValue = False Then Exit Sub '获取布尔值以保留公式或对结果进行硬编码..., vbYesNo) '遍历所选区域每一单元格 For Each c In Selection If IsNumeric(c.Value) Then '计算单元格的结果 formulaString
在VBA中,可以通过多种不同的方式来引用工作表中的单元格/单元格区域。下面是一些引用方法的汇总。 Range(“D1”) 引用单元格D1。 Range(“D” & i) 引用列D中行号为i的单元格。...引用连续单元格区域中最底部的单元格(即该单元格下方的单元格为空)。还可以使用xlUP、xlLeft和xlRight来引用相应的单元格。...Range(“A1”).EntireColumn 引用起始单元格所在的整列。如果选择了多个单元格,则引用这些单元格所在的多列。 Range(“A1”).EntireRow 引用起始单元格所在的整行。...如果选择了多个单元格,则引用这些单元格所在的多行。 Range(“A1”).DirectDependents 等价于Ctrl+]组合键。引用目标单元格直接相关的单元格。...引用目标单元格的所有从属单元格,包括从属单元格的从属单元格。如果工作表中没有从属单元格可用则返回错误。 Range(“A1”,”D1”) 引用单元格区域A1:D1。
标签:VBA 有时候,我们想要批量复制多个工作表到新的工作簿,可以使用VBA代码来实现。...工作簿对象的SaveAs方法存储新工作簿(使用工作表Data的单元格A1中的内容作为工作簿名称),而Close方法关闭新工作簿。
文章背景: 在Excel中,公式引用无效单元格时将显示 #REF! 错误。当公式所引用的单元格被删除或被粘贴覆盖时最常发生这种情况。...为了防止单元格被人不小心移动,可以通过禁用自动填充功能来实现(参见延伸阅读)。...使用VBA代码:Application.CellDragAndDrop = False ,虽然可以避免单元格被移动,但也存在一个问题,如果复制其他工作簿的内容,再回到本工作表内进行粘贴时,发现数据无法粘贴...为了在禁用自动填充功能的同时,依然可以在本工作表内正常跨表粘贴数据,在查阅相关资料之后,找到了可以实现这样要求的VBA代码。 示例: 在本工作簿内,原始数据保存在sheets("源数据")这张表内。...: 禁止单元格移动,防止单元格公式引用失效
Null是VBA中的一个特殊的数值,可以近似地将其理解为无效数据。判断一个变量是否为Null时,需要使用函数IsNull。...= True 2 示例 VBA示例代码: Option Explicit Sub mergeCells() '测试合并单元格的属性 Dim wt As Worksheet...因为单元格区域B6:B7是一个合并单元格,B8:B9是另一个合并单元格。换句话说,单元格区域B6:B8,包含一个完成合并的区域,并且不包含未合并的单元格。...参考资料: [1] VBA编程知识点(15)——合并单元格 - 知乎 (zhihu.com)(https://zhuanlan.zhihu.com/p/91271337) [2] Range.MergeCells...属性 (Excel) | Microsoft Learn(https://learn.microsoft.com/zh-cn/office/vba/api/excel.range.mergecells
标签:VBA 这是在网上看到的一段代码,辑录于此,供有兴趣的朋友参考。 有人问:如何根据单元格的背景色确定单元格字体是黑色还是白色?...也就是说,如果单元格背景色是白色,那么字体就是黑色;反之,如果单元格背景色是黑色,那么字体就是白色。 下面是解决这个问题的VBA程序,很酷的算法!...选择要设置字体颜色的单元格区域,运行SetFontColor过程即可。
标签:Excel技巧 有时候,我们想在单元格中显示图片,然而又不想使用VBA,该怎么办呢?有一种方法,就是使用单元格批注。...可以将图片添加到单元格批注中,这样,用户鼠标在该单元格上时,就会显示图片,无需VBA,非常简单,如下图1所示。 图1 下面讲解实现步骤。...步骤1:在单元格中单击右键,从快捷菜单中选择“插入批注”命令,如下图2所示。 图2 步骤2:选择批注,单击右键,从快捷菜单中选择“设置批注格式”命令,如下图3所示。
PS:工作中用到的代码,存起来备用 问题:有一程序:批量提取多工作簿中指定单元格的内容汇总到总表 程序运行如下: 1.取得文件夹中的所有.xlsx文件的路径 2.依次workbooks.Open("...文件路径") 3.取得每个工作簿的指定单元格的Address,【此处要先编辑好】 4.再关闭文件 再打开下一个文件,循环下去就可以啦 【问题】问题就在第三步。...= Application.Transpose(dicB.keys) End With End Sub 结果如下,完成后,还要再手工整理 再手工整理,使项目与Address,相对应 再应用于
标签:VBA,自定义函数 下面的VBA自定义函数可以实现在单元格区域中查找满足多个值的行或列。
3、代码实现 让我们看看如何用VBA代码1分钟内搞定。 这个需求的核心是如何能够得到所有的Excel文件路径,只要文件格式一致,打开Excel,复制需要的数据是很简单的。...VBA遍历获取所有文件方法: 调用Dir函数 使用FileSystemObject 使用cmd命令 Dir函数个人觉得不好用,用下面的2种方法。...Workbooks.Open(srcfile, False) Dim i_row As Long ActiveSheet.AutoFilterMode = False '找到需要复制的单元格范围...Resize(i_row, 1).Value = srcfile '复制 Range("A1").Resize(i_row, COLS).Copy des '复制完一个文件后,目标单元格下移...False End Function 主程序: Sub VBAMain() Dim path As String path = GetFolderPath() If VBA.Len
标签:VBA,工作表事件 当工作表单元格中的值被修改后,我需要将修改前的值放置到其右侧单元格中。例如,单元格A1中输入有数值1,当我将其内容修改为2之后,之前的数值1被放置到单元格B2中。...Worksheets("Sheet1").Range("B1") = sOldValue Application.EnableEvents = True End If End Sub 这样,当在单元格...A1中重新输入值时,原值会自动放置到单元格B1中。...当一列单元格区域中的值发生改变时,需要将修改之前的值放置到相邻列对应单元格中,例如对于单元格区域A1:A10,其值发生改变时,原来的值会自动放置到单元格区域B1:B10对应的单元格中。
针对排序的步骤,可以通过VBA代码实现。 代码实现:在原有测试数据的基础上,根据“品号”列和给定的测试点数目(暂定5个),进行重新排序。