Excel简明宏教程-完美打印版

合集下载

excel宏命令详细讲解

excel宏命令详细讲解

excel宏命令详细讲解Excel宏命令是一种自动化操作工具,可以用来简化重复性的任务,提高工作效率。

本文将详细讲解一些较为冷门但实用的宏表函数,带你玩转宏命令。

一、自定义宏命令自定义宏命令可以根据个人的需求编写,可用于自动完成一系列复杂的操作。

以下是一个例子:Sub MyMacro'将选定的单元格背景设置为黄色Selection.Interior.Color = RGB(255, 255, 0)End Sub二、输入框函数输入框函数可以用来创建用户交互界面,用户可以在输入框中输入值,作为宏的参数。

以下是一个示例:Sub InputBoxDemoDim Value As StringValue = InputBox("请输入您的姓名:")MsgBox "欢迎您," & ValueEnd Sub三、循环函数循环函数可以重复执行一段代码。

以下是两种常用的循环函数:1. For循环For循环可以让代码块重复执行指定次数。

以下是一个示例:Sub ForLoopDemoDim i As IntegerFor i = 1 To 10Cells(i, 1).Value = iNext iEnd Sub2. Do While循环Do While循环会在条件满足时重复执行代码块。

以下是一个示例:Sub DoWhileLoopDemoDim i As Integeri=1Do While i <= 10Cells(i, 2).Value = i * 2i=i+1LoopEnd Sub四、选择函数选择函数可以用来根据条件选择性地执行不同的代码块。

以下是一个示例:Sub ChooseCaseDemoDim Value As StringValue = InputBox("请输入一个数字:")Select Case ValueCase "1"MsgBox "你输入的是数字1"Case "2"MsgBox "你输入的是数字2"Case ElseMsgBox "你输入的是其他数字"End SelectEnd Sub五、错误处理函数错误处理函数可以捕捉和处理出现的错误。

Excel宏的使用教程

Excel宏的使用教程

E x c e l宏的使用教程本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.MarchExcel宏的使用教程Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件,其中包括Excel、PP T、Word、Outlook等。

使用Excel的VBA开发的Excel文档,在Excel中运行时需要开启Excel的宏功能,否则此文档的VBA自动化功能将被完全屏蔽,文档的功能无法实现。

因此,在打开这些Excel程序文件之前,您需要先对您的Excel宏安全性进行设置(设置永久有效,在同一台电脑上无需再次设置)在Excel2003版本中,可以依以下步骤操作:1,在Excel的菜单栏上依次单击“工具”——“宏”——“安全性”,打开下图所示的“安全性”对话框,2,在“安全级”选项卡中将宏的安全级别设置为“中”或“低”。

其中推荐使用“中”级,这样的设置并不会降低您的安全性,您仍然对任意一个宏文件都拥有主动选择是否运行的权力。

在宏的安全性级别设置成功后,再次打开Excel程序文件时,会出现下图所示信息框,此时点击“启用宏”按钮即可使本程序正常运行:在Excel2007/2010版本中,可以依以下步骤操作:1,依次单击Excel的Office按钮(2010版本为“文件”按钮)——“Excel选项”,打开下图所示的“Excel选项”选项卡,在左侧列表中选择“信任中心”,在右侧出现的窗口中点击“信任中心设置”按钮,2,打开“信任中心”选项卡,在左侧选择“宏设置”,在右侧出现的窗口中选择“禁用所有宏,并发出通知”选项,单击确定完成。

在宏的安全性级别设置成功后,再次打开Excel程序文件时,在信息栏(编辑栏上方)会出现下图所示的警告信息,此时点击其中的“选项”按钮打开Office 安全选项对话框,在其中选择“启用此内容”选项并确定即可使本程序正常运行。

excel写简单宏的教程

excel写简单宏的教程

excel写简单宏的教程
Excel中经常需要使用到宏功能,宏功能具体该如何操作呢?下面是由店铺分享的excel写简单宏的教程,以供大家阅读和学习。

excel写简单宏的教程:
写简单宏步骤1:首先,要写一个宏,我们要把相应的工具栏给显示出来。

打开excel表格,在快速访问工具栏右击鼠标,在弹出的菜单选择“自定义功能区”。

写简单宏步骤2:在右侧的方框,看到“开发工具”选项,将前面的方框打钩,然后单击确定,这样,开发工具就会显示在快速访问工具栏,方便我们使用。

写简单宏步骤3:点击开发工具,然后单击插入,在下拉的菜单的表单控件里面选择“按钮”,如下图所示。

写简单宏步骤4:这个时候,会弹出一个对话框“指定宏”,单击"新建"按钮。

写简单宏步骤5:这样就会进入后台的程序书写界面,进入以后,程序的头和尾已经帮你写好了。

你只需要在中间写入一句程序“ MsgBox("hello world") ”,然后,点击保存。

这个时候会有一些警告,全部选是。

然后退出程序界面。

写简单宏步骤6:这个时候,程序已经写好了,你点击excel里面的按钮,屏幕就会弹出一个hello world 的框框,说明我们成功了。

(完整版)excel宏教程

(完整版)excel宏教程

Excel宏教程一、选中单个单元格Range(“<单元格地址>“).Select例:Range("C9").Select ‘选中“C9”单元格二、选中多个单元格Range(“<单元格地址>:<单元格地址>[,<单元格地址>……]”).Select例:Range(“A1:B2”).Select‘选中“A1”、“A2”、“B1”、“B2”四个连续的单元格Range(“12:12”).Select‘选中第12行Range(“B:B”).Select‘选中第B列Range(“A1:A2,B7,2:2”).Select‘选中“A1”、“A2”、“B7”五个不连续的单元格和第二行Cells.Select ‘选中当前SHEET中的所有单元格Rows("<行地址>:<行地址>").Select ‘选中整行Columns("<列地址>:<列地址>").Select ‘选中整列例:Row s(“2:2”). Select‘选中第2行Rows(“2:5”). Select‘选中2到5行Columns("A:A").Select ‘选中A列Columns("E:B").Select ‘选中E到B列三、设置活动单元格Range("<单元格地址>").Activate注:设置活动单元格与选中单元格类似,不同之处就是后者在选中指定的单元格之前会将在此前已被选中的单元格取消掉。

前者在设置之前不会取消已选中的单元格,如果此时操作的单元格不是被选中的单元格,这时他实现的功能与选一个单元格相同。

四、给活动的单元格赋值ActiveCell.FormulaR1C1 = <值>例:Range("A1").SelectActiveCell.FormulaR1C1 = "Name"Range("B1").SelectActiveCell.FormulaR1C1 = "Age"Range("A2:B3").SelectRange("A2").ActivateActiveCell.FormulaR1C1 = " BUG"Range("B2").ActivateActiveCell.FormulaR1C1 = "12"Range("A3").ActivateActiveCell.FormulaR1C1 = "Archer"Range("B3").ActivateActiveCell.FormulaR1C1 = "37"五、得到指定单元格中的值Range("<单元格地址>").Text六、插入单元格Selection.Insert Shift:=<XlDirection值>Selection.EntireRow.InsertSelection.EntireColumn.Insert例:Selection.Insert Shift:=xlToRight ‘在当前选中单元格的位置插入单元格并将当前选中的单元格向右移动Selection.Insert Shift:=xlDown ‘在当前选中单元格的位置插入单元格并将当前选中的单元格向下移动Selection.EntireRow.Insert ‘在当前选中单元格的上面插入一行Selection.EntireColumn.Insert ‘在当前选中单元格的左侧插入一列七、设置字体属性1. 设置字体名称和大小 = <字体名称>Selection.Font.Size = <字号>例: = "隶书"Selection.Font.Size = 152. 设置字体样式Selection.Font.Bold = <True / False> ‘加粗Selection.Font.Italic = <True / False> ‘斜体Selection.Font.Underline = < XlUnderlineStyle(下划线样式)> ‘下划线XlUnderlineStyle(下划线样式):xlUnderlineStyleDouble ‘双下划线xlUnderlineStyleDoubleAccounting ‘会计用双下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)xlUnderlineStyleNone 没有下划线xlUnderlineStyleSingle ‘单下划线xlUnderlineStyleSingleAccounting ‘会计用单下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)3. 设置字体的颜色Selection.Font.ColorIndex = <0到56之间的数字>Selection.Font.Color = <RGB值>4. 设置字体的特殊效果Selection.Font.Strikethrough = <True / False> ‘删除线Selection.Font.Superscript = <True / False> ‘上标Selection.Font.Subscript = <True / False> ‘下标八、清空选中单元格里的内容Selection.ClearContents例:Range(“A1:A2,B7,2:2”).Select‘选中“A1”、“A2”、“B7”五个不连续的单元格和第二行Selection.ClearContents ‘清空“A1”、“A2”、“B7”五个不连续单元格中的所有内容九、设置选中单元格的边线属性XlBordersIndex(边线):xlEdgeLeft '单元格左边线xlEdgeTop ‘单元格上边线xlEdgeRight ‘单元格右边线xlEdgeBottom ‘单元格下边线xlDiagonalDown ‘单元格左上右下斜线xlDiagonalUp ‘单元格左上右下斜线xlInsideVertical ‘多个单元格内垂直线xlInsideHorizontal ‘多个单元格内水平线1. 设置边线的类型Selection.Borders(<边线>).LineStyle = < XlLineStyle(边线类型)>XlLineStyle(边线类型):xlLineStyleNone ‘无样式xlContinuous ‘单线xlDash ‘破折号线(间隔线)xlDashDot ‘破折号点线xlDashDotDot ‘破折号点点线xlDot ‘点线xlDouble ‘双横线xlSlantDashDot ‘斜点线2. 设置边线的宽度Selection.Borders(<边线>).Weight = <XlBorderWeight(边线的宽度值)>XlBorderWeight(宽度值):xlHairline ‘极细xlThin ‘细xlMedium ‘中等xlThick ‘粗3. 设置边线的颜色Selection.Borders(xlEdgeLeft).ColorIndex = <0到56之间的数字>Selection.Borders(xlEdgeLeft).Color = <RGB值>十、删除选中的单元格Selection.Delete <XlDirection值>Selection.EntireRow.DeleteSelection.EntireColumn.Delete例:Selection.Delete Shift:=xlToLeft ‘删除选中的单元格,并将已删除单元格所在位置右面的单元格向左移动Selection.Delete Shift:=xlUp ‘删除选中的单元格,并将已删除单元格所在位置下面的单元格向上移动Selection.EntireRow.Delete ‘删除选中单元格所在的行Selection.EntireColumn.Delete ‘删除选中单元格所在的列十一、设置单元格背景色及图案1. 背景色Selection.Interior.ColorIndex = <0到56之间的数字> Selection.Interior.Color = <RGB值>2. 图案样式Selection.Interior.Pattern = <Constants(图案样式)>Constants(图案样式):xlSolid '实心xlGray75 '75% 灰色xlGray50 '50% 灰色xlGray25 '25% 灰色xlGray16 '12.5% 灰色xlGray8 '6.25% 灰色xlHorizontal '水平条纹xlVertical '垂直条纹xlDown '逆对角线条纹xlUp '对角线条纹xlChecker '对角线剖面线xlSemiGray75 '粗对角线剖面线xlLightHorizontal '细水平条纹xlLightVertical '细垂直条纹xlLightDown '细逆对角线条纹xlLightUp '细对角线条纹xlGrid '细水平剖面线xlCrissCross '细对角线剖面线3. 图案颜色Selection.Interior.PatternColorIndex = <0到56之间的数字>Selection.Interior.PatternColor = <RGB值>十二、返回工作表中的行数edRange.Rows.Count ‘返回从最小已输入内容的行号到最大已输入内容的行号之间的行数edRange.Rows(edRange.Rows.Count).Row ‘最大已输入内容的行号十三、得到当前EXCEL的文件名ThisWorkbook.Path ‘文件路径 ‘文件名ThisWorkbook.FullName ‘全路径十四、批注的操作1. 添加批注AddComment([Content])例:Range("A1").AddComment ("Writes the content in here!")2. 修改批注内容Comment.Text例:Range("B1").Comment.Text Text:= "Writes the content in here!"3. 显示/隐藏批注Comment.Visible = <True/False>4. 删除批注ClearComments例:Selection.Range("B1").ClearComments5. 选中批注Comment.Shape.Select True例:Range("D8").Comment.Shape.Select True6. 改变批注大小和位置Selection.ShapeRange.ScaleWidth <宽度比例>, msoFalse, <MsoScaleFrom> Selection.ShapeRange.ScaleHeight <高度比例>, msoFalse, <MsoScaleFrom>例:Selection.ShapeRange.ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft ‘每次增加5%的宽度Selection.ShapeRange.ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft ‘每次减少6%的宽度Selection.ShapeRange.Left = <左边距>Selection.ShapeRange.Top = <上边距>Selection.ShapeRange.Width = <宽度值>Selection.ShapeRange.Height = <高度值>十五、剪切、复制、粘贴Selection.Cut ‘剪切Selection.Copy ‘复制ActiveSheet.Paste ‘粘贴例:Range("A1").SelectSelection.CutRange("A2").SelectActiveSheet.PasteSelection.CopyRange("A3").SelectActiveSheet.Paste十六、选择性粘贴Selection.PasteSpecial <option>十七、改变列宽Selection.ColumnWidth = <宽度值> ‘指定列宽例:Columns("A:A").SelectSelection.ColumnWidth = 30 ‘改变已选列的宽度EntireColumn.AutoFit ‘自动改变列宽例:Columns("C:C").EntireColumn.AutoFit ‘根据C列的内容自动改变列的宽度在Excel 97中,"宏"是一个难以理解的概念,但对于一个具体的"宏"而言,却是容易理解的,如果说"将一块文字变为注释:黑体注释:,字号为注释:三号注释:"就可以看作一个"宏"的话,那么"宏"就不难理解了,其实Excel 97中的许多操作都可以是一个"宏"。

Excel宏的使用教程

Excel宏的使用教程

E x c e l宏的使用教程-CAL-FENGHAI.-(YICAI)-Company One1Excel宏的使用教程Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件,其中包括Excel、PP T、Word、Outlook等。

使用Excel的VBA开发的Excel文档,在Excel中运行时需要开启Excel的宏功能,否则此文档的VBA自动化功能将被完全屏蔽,文档的功能无法实现。

因此,在打开这些Excel程序文件之前,您需要先对您的Excel宏安全性进行设置(设置永久有效,在同一台电脑上无需再次设置)在Excel2003版本中,可以依以下步骤操作:1,在Excel的菜单栏上依次单击“工具”——“宏”——“安全性”,打开下图所示的“安全性”对话框,2,在“安全级”选项卡中将宏的安全级别设置为“中”或“低”。

其中推荐使用“中”级,这样的设置并不会降低您的安全性,您仍然对任意一个宏文件都拥有主动选择是否运行的权力。

在宏的安全性级别设置成功后,再次打开Excel程序文件时,会出现下图所示信息框,此时点击“启用宏”按钮即可使本程序正常运行:在Excel2007/2010版本中,可以依以下步骤操作:1,依次单击Excel的Office按钮(2010版本为“文件”按钮)——“Excel选项”,打开下图所示的“Excel选项”选项卡,在左侧列表中选择“信任中心”,在右侧出现的窗口中点击“信任中心设置”按钮,2,打开“信任中心”选项卡,在左侧选择“宏设置”,在右侧出现的窗口中选择“禁用所有宏,并发出通知”选项,单击确定完成。

在宏的安全性级别设置成功后,再次打开Excel程序文件时,在信息栏(编辑栏上方)会出现下图所示的警告信息,此时点击其中的“选项”按钮打开Office安全选项对话框,在其中选择“启用此内容”选项并确定即可使本程序正常运行。

Excel中的宏和自动化操作教程

Excel中的宏和自动化操作教程

Excel中的宏和自动化操作教程Excel是一款功能强大的电子表格软件,广泛应用于各行各业。

在日常使用中,我们常常需要进行重复性的操作,比如复制粘贴数据、格式化单元格等。

为了提高工作效率,Excel提供了宏和自动化操作的功能,让我们能够快速完成繁琐的任务。

一、宏的概念和基本使用方法宏是一系列的操作命令的集合,可以记录和执行各种操作。

通过录制宏,我们可以将一系列的操作步骤保存下来,以后只需点击宏按钮,就能自动执行这些操作。

下面是宏的基本使用方法:1. 启用开发工具栏:在Excel的菜单栏中选择“文件”->“选项”->“自定义功能区”,勾选“开发工具”,点击“确定”按钮即可在菜单栏中看到“开发工具”选项卡。

2. 录制宏:在开发工具栏中点击“录制宏”按钮,弹出录制宏的对话框。

在对话框中填写宏的名称和快捷键(可选),选择宏存放的位置(个人工作簿或新的工作簿),点击“确定”开始录制。

3. 执行操作:在录制宏的过程中,进行需要自动执行的操作,比如复制粘贴数据、设置格式等。

完成操作后,点击“停止录制”按钮。

4. 运行宏:录制好的宏可以通过点击开发工具栏中的“宏”按钮或者使用快捷键来运行。

执行宏后,Excel会自动按照录制时的操作步骤进行操作。

二、宏的高级应用除了录制宏,我们还可以通过编辑宏代码来实现更加复杂的功能。

宏代码使用的是Visual Basic for Applications(VBA)语言,下面是一些常用的宏代码示例:1. 循环结构:通过循环结构,可以重复执行一段代码。

比如,我们可以使用For循环来遍历某个区域的单元格,并对每个单元格进行操作。

2. 条件判断:通过条件判断,可以根据不同的情况执行不同的代码。

比如,我们可以使用If语句来判断某个单元格的值是否满足条件,如果满足则执行相应的操作。

3. 用户输入框:通过用户输入框,可以在执行宏时输入参数。

比如,我们可以使用InputBox函数来弹出一个输入框,让用户输入需要的信息。

Excel中宏的创建与使用详解

Excel中宏的创建与使用详解

Excel中宏的创建与使用详解Excel是一款功能强大的电子表格软件,它可以帮助我们进行数据的处理和分析。

而宏是Excel中的一个重要功能,它可以帮助我们自动化完成一些重复性的工作,提高工作效率。

本文将详细介绍Excel中宏的创建与使用方法,希望能对大家有所帮助。

一、宏的创建在Excel中创建宏非常简单,只需按照以下步骤进行操作即可:1. 打开Excel软件,点击菜单栏中的“开发工具”选项,如果没有看到该选项,可以通过“文件”-“选项”-“自定义功能区”来启用开发工具选项卡。

2. 在开发工具选项卡中,点击“宏”按钮,弹出“宏”对话框。

3. 在宏对话框中,输入宏的名称,可以根据自己的需要进行命名。

4. 点击“创建”按钮,弹出宏编辑器窗口。

二、宏的编辑器宏编辑器是Excel中用于编辑和编写宏代码的工具,通过它可以实现一些复杂的功能。

在宏编辑器中,主要包括以下几个部分:1. 项目资源管理器:用于管理宏项目中的各个模块和表单。

2. 代码窗口:用于编写和编辑宏代码。

3. 属性窗口:用于设置宏项目的属性,如名称、描述等。

在宏编辑器中,我们可以使用VBA(Visual Basic for Applications)语言来编写宏代码。

VBA是一种基于Visual Basic的编程语言,它具有简单易学、功能强大的特点。

三、宏的使用在Excel中,我们可以通过宏来实现一些常见的操作,如数据的筛选、排序、格式设置等。

下面以一个简单的例子来说明宏的使用方法:假设我们有一个包含学生成绩的Excel表格,我们想要根据成绩的高低对学生进行排序。

可以按照以下步骤进行操作:1. 打开Excel软件,打开包含学生成绩的表格。

2. 按下“Alt+F11”快捷键,打开宏编辑器。

3. 在宏编辑器中,输入以下代码:```Sub SortGrades()Range("A2:B10").Sort Key1:=Range("B2:B10"), Order1:=xlDescending, Header:=xlNoEnd Sub```代码中的“Range("A2:B10")”表示要排序的数据范围,“Range("B2:B10")”表示排序的依据,即成绩列。

EXCEL宏编程简明教程(有实例),

EXCEL宏编程简明教程(有实例),

Excel 宏编程简明教程一)、宏学习首先需要明确的是,本文不可能教会您关于宏的所有内容。

您需要学会利用"录制宏"的方法来学习宏:点击Excel"工具"下拉菜单中"宏"下quot;录制新宏",此后可象平时一样进行有关操作,待完成后停止录制。

然后再点击"工具"下拉菜单中"宏"下"宏"的"编辑"选项即可打开刚才所录制的宏的Visual Basic源程序,并且可以在此时的"帮助"下拉菜单中获得有关的编程帮助。

对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。

二)、基本概念为了学习Excel中的宏,我们需要先了解以下一些基本概念。

1、工作簿:Workbooks、Workbook、ActiveWorkbook、ThisWorkbookWorkbooks集合包含Excel中所有当前打开的Excel工作簿,亦即所有打开的Excel文件;Workbook对应Workbooks中的成员,即其中的Excel文件;ActiveWorkbook代表当前处于活动状态的工作簿,即当前显示的Excel文件;ThisWorkbook代表其中有Visual Basic代码正在运行的工作簿。

在具体使用中可用Workbooks(index)来引用Workbook对象,其中index为工作簿名称或编号;如Workbooks(1)、Workbooks("年度报表.xls")。

而编号按照创建或打开工作簿的顺序来确定,第一个打开的工作簿编号为1,第二个打开的工作簿为2……。

2、工作表:Worksheets、Worksheet、ActiveSheetWorksheets集合包含工作簿中所有的工作表,即一个Excel文件中的所有数据表页;而Worksheet则代表其中的一个工作表;ActiveSheet代表当前处于的活动状态工作表,即当前显示的一个工作表。

excel,怎么通过宏把工资表生成打印条

excel,怎么通过宏把工资表生成打印条

第一步:把这个工资表复制到一个新的工作薄中(光复制有人员名字的那些,表头不复制),然后在新的工作薄的头一列前新加一列,头三行分别输入2,5,8,然后选中这三行,用数据填充柄往下拉至全部人员,这样就在每个人的前边都加了数字。

第二步:在最后的人员名字下行的第二列把原表头复制进去(也就是说前边要空一个格,目的是添数字),有多少人,就复制多少行,或者用填充柄来实现也可。

(比如50人就要有50行表头),在这些表头的第一行前边添数字1,第二行表头前边添数字4,第三行表头前边添数字7,然后用数据填充柄来实现其他行的填充。

第三步:在最后一行表头的下行第一列处添数字3,再下一行添6,再下一行添9,然后用数据填充柄实现以后行的填充(空行数量必须和人员数量一致)。

第四步:选中整个表格,用“数据”中的“排序”对A列进行排序,这样就完成了整个工资表的制作。

第五步:把整个表格复制到WORD当中(因为用excel做的表格空行有框,无法消除)然后把表格加以调整,把空行的竖行都消除了(这个工作挺烦琐,你可以按住ctrl键用鼠标把全部空行都选中然后进行操作)。

最后再给这个工资表加上题目,至此工资表的工作基本完成。

实现你要求的打印格式程序如下,是根据你的实际表的情况,用宏编写的:Sub Print_table()Sheets("sheet2").Select'5 是工资表上打印的人数减1,可更改For i = 1 To 5'每个工人工资条下方插入两行,20是工资表的列数,可根据情况更改,下面三行中的的20要同时修改。

Range(Cells(3 * i + 1, 1), Cells(3 * i + 2, 20)).SelectSelection.Insert Shift:=xlDown'复制表头Range(Cells(1, 1), Cells(2, 20)).SelectSelection.CopyCells(3 * i + 1, 1).SelectActiveSheet.PasteActiveCell.Rows("1:1").EntireRow.RowHeight = 42NextRange("a2").SelectEnd Sub请注意以下几点:1、Excel启动时,提示是否使用宏,点击“启用宏”。

Excel宏的使用方法

Excel宏的使用方法

Excel宏的使用方法第一章:认识Excel宏Excel宏是一种自动化任务的编程工具,它可以记录和执行一系列的操作步骤。

宏能够大幅度提高工作效率,尤其是在处理重复性操作或大数据量的情况下。

第二章:开启和录制宏在Excel中,通过开启“开发工具”选项卡,可以找到宏的相关功能。

点击“宏”按钮即可打开宏的管理器。

录制宏的方法是选择开始录制并执行一系列的操作步骤,然后停止录制。

第三章:编辑和调试宏编辑宏可以对宏进行代码的编写和修改。

选择“编辑”按钮就可以进入宏的代码编辑界面。

宏的代码是使用VBA(Visual Basicfor Applications)语言编写的,可以使用VBA的各种语法和函数。

第四章:宏的基本语法VBA语言具有类似于其他编程语言的基本语法,比如变量赋值、条件判断、循环等。

掌握这些基本语法是宏编程的基础。

第五章:常用的宏操作5.1 数据导入导出宏操作可以使用宏来自动导入和导出数据,比如从数据库中获取数据并导出到Excel表中,或者将Excel表中的数据导出到其他格式。

5.2 数据处理宏操作在Excel中,可以使用宏来进行各种数据处理操作,比如数据清洗、格式转换、排序等。

通过编写代码,可以实现一键完成复杂的数据处理任务。

5.3 动态数据更新宏操作宏可以使数据自动更新,比如通过连接外部数据源,通过宏的计算和刷新,实现数据的实时更新。

第六章:提高宏的效率6.1 优化代码可以通过优化代码来提高宏的运行效率,比如避免重复计算、减少不必要的循环等。

6.2 使用快捷键和自动触发通过为宏设置快捷键或者自动触发,可以减少操作步骤,提高宏的执行效率。

6.3 编写高效的宏代码编写高效的宏代码是提高宏效率的关键。

可以使用一些技巧和优化策略,比如使用数组、避免使用选择和激活操作等。

第七章:宏的常见问题与解决方法7.1 宏安全性设置在Excel中,存在一些宏的安全风险,所以需要设置宏的安全性级别。

可以根据实际需求选择适当的安全级别,并做好相应的防护措施。

excel中编写简单宏的方法步骤(2)

excel中编写简单宏的方法步骤(2)

excel中编写简单宏的方法步骤(2)如何打开excel的宏的教程(一)打开宏步骤1:如果“开发工具”选项卡不可用,执行下列操作以显示此选项卡:打开宏步骤2:.单击“Office 按钮”,然后单击“Excel 选项”。

打开宏步骤3:在“常用”类别中的“使用 Excel 时采用的首选项”下,选中“在功能区显示‘开发工具’选项卡”复选框,然后单击“确定”。

打开宏步骤4:注释:功能区是 Microsoft Office Fluent 用户界面的一个组件。

打开宏步骤5:.在“开发工具”选项卡上的“代码”组中,单击“宏”。

打开宏步骤6:在“宏名”框中,单击要分配给Ctrl 组合快捷键的宏。

打开宏步骤7:单击“选项”。

打开宏步骤8:在“快捷键”框中,键入要使用的任何小写字母或大写字母。

打开宏步骤9:注释:当包含该宏的工作簿打开时,该快捷键将覆盖任何对等的默认 Excel 快捷键。

打开宏步骤10:在“说明”框中,键入对该宏的描述。

打开宏步骤11:单击“确定”,然后单击“取消”。

如何打开excel的宏的教程(二)打开宏步骤7:单击“Office 按钮”,然后单击“Excel 选项”。

打开宏步骤2:单击“自定义”,然后在“从下列位置选择命令”列表中,选择“宏”。

打开宏步骤3:在列表中,单击创建的宏,然后单击“添加”。

打开宏步骤4:.若要更改宏的按钮图像,请在添加宏的框中选择该宏,然后单击“修改”。

打开宏步骤5:在“符号”下,单击要使用的按钮图像。

打开宏步骤6:若要更改将指针停留在按钮上时显示的宏名,请在“显示名称”框中键入要使用的名称。

打开宏步骤7:此时,单击“确定”便会将宏按钮添加到快速访问工具栏。

打开宏步骤8:在快速访问工具栏上,单击宏按钮。

(完整版)excel宏教程

(完整版)excel宏教程

Excel宏教程一、选中单个单元格Range( “单<元格地址> “ ).Select例:Range("C9").Select ‘选中“C9”单元格二、选中多个单元格Range( “单<元格地址>:< 单元格地址>[,< 单元格地址> ⋯⋯] ” ).Select例:Range(“A1:B2”).Select ‘选中“A1”、“A2”、“B1、”“B2”四个连续的单元格Range( “ 12:12 ” ).Sele‘选ct 中第12 行Range( “ B:B ” ).Sele‘c选t 中第B 列Range( “ A1:A2,B7,2:2 ” ).S‘e选le中ct “ A1、”“ A2、”“ B7五”个不连续的单元格和第二行Cells.Select ‘选中当前SHEET 中的所有单元格Rows("< 行地址>:< 行地址>").Select ‘选中整行Columns("< 列地址>:< 列地址>").Select ‘选中整列例:Rows(“2:2”). Select ‘选中第2 行Rows( “ 2:5 ” ). Selec‘选t 中2 到5 行Columns("A:A").Select ‘选中A 列Columns("E:B").Select ‘选中E 到B 列三、设置活动单元格Range("< 单元格地址>").Activate注:设置活动单元格与选中单元格类似,不同之处就是后者在选中指定的单元格之前会将在此前已被选中的单元格取消掉。

前者在设置之前不会取消已选中的单元格,如果此时操作的单元格不是被选中的单元格,这时他实现的功能与选一个单元格相同。

四、给活动的单元格赋值ActiveCell.FormulaR1C1 = < 值>例:Range("A1").SelectActiveCell.FormulaR1C1 = "Name"Range("B1").SelectActiveCell.FormulaR1C1 = "Age"Range("A2:B3").SelectRange("A2").ActivateActiveCell.FormulaR1C1 = " BUG"Range("B2").ActivateActiveCell.FormulaR1C1 = "12"Range("A3").ActivateActiveCell.FormulaR1C1 = "Archer"ActiveCell.FormulaR1C1 = "37"Range("B3").Activate五、得到指定单元格中的值Range("< 单元格地址>").Text六、插入单元格Selection.Insert Shift:=<XlDirection 值>Selection.EntireRow.InsertSelection.EntireColumn.Insert例:Selection.Insert Shift:=xlToRight ‘在当前选中单元格的位置插入单元格并将当前选中的单元格向右移动Selection.Insert Shift:=xlDown ‘在当前选中单元格的位置插入单元格并将当前选中的单元格向下移动Selection.EntireRow.Insert ‘在当前选中单元格的上面插入一行Selection.EntireColumn.Insert ‘在当前选中单元格的左侧插入一列七、设置字体属性1. 设置字体名称和大小 = < 字体名称>Selection.Font.Size = < 字号>例: = " 隶书"Selection.Font.Size = 15Selection.Font.Underline = < XlUnderlineStyle(下划线样式)> ‘下划线2. 设置字体样式Selection.Font.Bold = <True / False> ‘加粗Selection.Font.Italic = <True / False> ‘斜体XlUnderlineStyle(下划线样式):xlUnderlineStyleDouble ‘双下划线xlUnderlineStyleDoubleAccounting ‘会计用双下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)xlUnderlineStyleNone 没有下划线xlUnderlineStyleSingle ‘单下划线xlUnderlineStyleSingleAccounting ‘会计用单下划线(如果当前单元格中的数据是数字时则下划线的宽度是当前单元格的宽度)3. 设置字体的颜色Selection.Font.ColorIndex = <0 到56 之间的数字>Selection.Font.Color = <RGB 值>4. 设置字体的特殊效果Selection.Font.Strikethrough = <True / False> ‘删除线Selection.Font.Superscript = <True / False> ‘上标Selection.Font.Subscript = <True / False> ‘下标八、清空选中单元格里的内容Selection.ClearContents例:Range(“A1:A2,B7,2:2 ”).Select ‘选中“A1”、“A2”、“B7”五个不连续的单元格和第二行Selection.ClearContents ‘清空“ A1、”“ A2、”“ B7五”个不连续单元格中的所有内容九、设置选中单元格的边线属性XlBordersIndex(边线):xlEdgeLeft '单元格左边线xlEdgeTop ‘单元格上边线xlEdgeRight ‘单元格右边线xlEdgeBottom ‘单元格下边线‘单元格左上右下斜线xlDiagonalDown‘单元格左上右下斜线xlDiagonalUpxlInsideVertical ‘多个单元格内垂直线xlInsideHorizontal ‘多个单元格内水平线1. 设置边线的类型Selection.Borders(<边线>).LineStyle = <边线类型)> XlLineStyle(XlLineStyle(边线类型):xlLineStyleNone ‘无样式xlContinuous ‘单线xlDash ‘破折号线(间隔线)xlDashDot ‘破折号点线xlDashDotDot ‘破折号点点线xlDot ‘点线xlDouble ‘双横线xlSlantDashDot ‘斜点线2. 设置边线的宽度Selection.Borders(<边线>).Weight = <XlBorderWeight(边线的宽度值)>XlBorderWeight( 宽度值):xlHairline ‘极细xlThin ‘细xlMedium ‘中等xlThick ‘粗3. 设置边线的颜色Selection.Borders(xlEdgeLeft).ColorIndex = <0 到56 之间的数字>Selection.Borders(xlEdgeLeft).Color = <RGB 值>十、删除选中的单元格Selection.Delete <XlDirection 值>Selection.EntireRow.DeleteSelection.EntireColumn.Delete例:Selection.Delete Shift:=xlToLeft ‘删除选中的单元格, 并将已删除单元格所在位置右面的单元格向左移动Selection.Delete Shift:=xlUp ‘删除选中的单元格, 并将已删除单元格所在位置下面的单元格向上移动Selection.EntireRow.Delete ‘删除选中单元格所在的行Selection.EntireColumn.Delete ‘删除选中单元格所在的列十一、设置单元格背景色及图案1. 背景色Selection.Interior.ColorIndex = <0 到56 之间的数字> Selection.Interior.Color = <RGB 值>2. 图案样式Selection.Interior.Pattern = <Constants(Constants(图案样式):xlSolid '实心xlGray75 '75% 灰色xlGray50 '50% 灰色xlGray25 '25%灰色xlGray16'12.5%灰色xlGray8 '6.25% 灰色xlHorizontal '水平条纹xlVertical ' 垂直条纹xlDown ' 逆对角线条纹xlUp '对角线条纹xlChecker ' 对角线剖面线xlSemiGray75 ' 粗对角线剖面线xlLightHorizontal '细水平条纹xlLightVertical ' 细垂直条纹xlLightDown '细逆对角线条纹xlLightUp '细对角线条纹xlGrid ' 细水平剖面线xlCrissCross ' 细对角线剖面线图案样式)>3. 图案颜色Selection.Interior.PatternColorIndex = <0到56 之间的数字>Selection.Interior.PatternColor = <RGB 值>十二、返回工作表中的行数edRange.Rows.Count ‘返回从最小已输入内容的行号到最大已输入内容的行号之间的行数edRange.Rows(edRange.Rows.Count).Row ‘最大已输入内容的行号十三、得到当前EXCEL 的文件名ThisWorkbook.Path ‘文件路径 ‘文件名ThisWorkbook.FullName ‘全路径十四、批注的操作1. 添加批注AddComment([Content])例:Range("A1").AddComment ("Writes the content in here!")2. 修改批注内容Comment.Text例:Range("B1").Comment.Text Text:= "Writes the content in here!"3. 显示/ 隐藏批注Comment.Visible = <True/False>4. 删除批注ClearComments例:Selection.Range("B1").ClearComments5. 选中批注Comment.Shape.Select True例:Range("D8").Comment.Shape.Select True6. 改变批注大小和位置Selection.ShapeRange.ScaleWidth < 宽度比例>, msoFalse, <MsoScaleFrom> Selection.ShapeRange.ScaleHeight < 高度比例>, msoFalse, <MsoScaleFrom>例:Selection.ShapeRange.ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft 5% 的宽度Selection.ShapeRange.ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft 的宽度Selection.ShapeRange.Left = <Selection.ShapeRange.Top = <Selection.ShapeRange.Width = < 宽度值>Selection.ShapeRange.Height = < 高度值>五、剪切、复制、粘贴‘每次增加每次减少6%左边距>上边距>Selection.Cut ‘剪切Selection.Copy ‘复制ActiveSheet.Paste ‘粘贴例:Range("A1").SelectSelection.CutRange("A2").Select ActiveSheet.Paste Selection.CopyRange("A3").Select ActiveSheet.Paste十六、选择性粘贴Selection.PasteSpecial <option>十七、改变列宽Selection.ColumnWidth = < 宽度值> ‘指定列宽例:Columns("A:A").SelectSelection.ColumnWidth = 30 ‘改变已选列的宽度EntireColumn.AutoFit ‘自动改变列宽例:Columns("C:C").EntireColumn.AutoFit‘根据C 列的内容自动改变列的宽度在Excel 97 中," 宏"是一个难以理解的概念,但对于一个具体的"宏"而言,却是容易理解的,如果说"将一块文字变为注释:黑体注释:,字号为注释:三号注释:"就可以看作一个"宏"的话,那么"宏"就不难理解了,其实Excel 97 中的许多操作都可以是一个" 宏"。

excel中编写简单宏的方法步骤

excel中编写简单宏的方法步骤

excel中编写简单宏的方法步骤(2)
推荐文章
Excel中进行设置双重密码的操作技巧热度: excel中求和筛选的使用教程热度: excel2007密码热度: excel如何设置单重密码和双重密码热度: Excel将当前数据添加到筛选器筛选技巧是什么热度:如何打开excel的宏的教程
第一种方法:
1、在“开发工具”页面中,点击“宏安全性”,然后在“信任中心”界面中将“开发人员宏设置”设置为“信任对VBA工程对象模型的访问”。

2、在“开发工具”界面中选中单元格A1,点击“录制宏”。

然后设置:“宏名为加粗变红,快捷键为Ctrl +Shift +R”,然后点击“确定”就可以了。

3、接着在开始界面中,将单元格A1的内容加粗、填充为红色。

然后点击“开发工具”中的“停止录制”就可以了。

4、接着我们可以设置单元格A2。

选中单元格A2,然后点击“开发工具”界面中的“宏”,然后点击弹出页面中的“执行”就可以了。

我们也可以选中单元格A2直接按住快捷键“Ctrl +Shift +R”就可以了。

第二种方法:
1、首先在Excel中录制宏,然后点击“文件”中的“另存为”,接着设置文件保存类型为“Excel启用宏的工作簿”,然后点击确定就可以了。

2、在Excel中打开工作簿,选中单元格A3。

然后点击“开发工
具”界面中的“宏”。

接着在弹出界面中点击“执行”就可以了。

以上就是Excel宏启用的两种方法,大家要是觉得这两种方法还不错的话,可以在空闲的时候试试。

在Excel中用宏命令制作打印表单

在Excel中用宏命令制作打印表单

在Excel中用宏命令制作打印表单这是一张通过Office办公软件Excel电子表格宏制作的单据打印表,其特点是:①操作简单只用鼠标就可完成打印全过程;②“商品单价”表可由厂家提供(或预先做好),对已做过选择的内容可进行标记;③“销售单”表可进行快速添加、清除和修改;④单据可选择性的保存。

本表想不到还很实用,只要在“商品单价”表中双击就可以把数据填入到“销售表”中,如果把它做一些小的改动就可用在其它的单据打印上。

现在把制作步骤写下来,让朋友对它做进一步的改进。

1、第一步:首先新建一个Excel电子表文件,在新建的文件中建立二张名字为“商品单价”和“销售单”的表。

在“商品单价”表中是用来存放厂家提供的商品单价数据,只要将厂家的商品单价输入好即可,厂家的商品未调价就不需做修改(如图1)。

2、第二步:在“销售单”表中按图2输入有关数据,部分单元格公式输入如下。

在C1至C3单元格中分别输入=IF(K15="","",K15),=IF(L1="","",L1)&IF(K1="","",K1),IF(K2="","",K2)在B5至B15单元格中分别输入=IF(K5="","",K5),……,=IF(K15="","",K15)在C5至C15单元格中分别输入=IF(B5="","",VLOOKUP(B5,spdj,2,FALSE)),……=IF(B15="","",VLOOKUP(B15,spdj,2,FALSE))在I5至I15单元格中分别输入=F5*G5 ,=F6*G6 …… =F14*G14和 =SUM(I5:I14)在单元格G<?xml:namespace prefix = st1 /><?xml:namespace prefix = st1 /><?xml:namespace prefix = st1/><?xml:namespace prefix = st1 /><?xml:namespace prefix = st1 /><?xml:namespace prefix = st1 /><?xml:namespace prefix = st1 />2 G3中分别输入=TODAY(),=IF(K3="","",K3)在单元格C15中输入="合计金额(大写):"&TEXT(INT(ABS(I15)),"[dbnum2]g/通用格式")&"元"&TEXT(INT(ABS(I15*10))-INT(ABS(I15))*10,"[dbnum2]g/通用格式")&"角"&TEXT(INT(ABS(I15*100))-INT(ABS(I15)*10)*10,"[dbnum2]g/通用格式")&"分整"在单元格C16 C17 G17中分别输入=IF(K4="","",K4),=IF(K17="","" , K17), =IF(K16="","",K16)其余的输入就不用我介绍了。

Excel自编宏大全(Word版)

Excel自编宏大全(Word版)

目录1,从数据源匹配取数的问题2,部分字符地址查找3,多表查询汇总和重复值问题(相同行删除、循环比较)4,工作表的名称和index号5,重复值加色6,统计7,最大或最小8,最后一记录(定义动态区域名称、不重复值公式宏、不重复值个数和行数公式宏、加边框宏)9,大港表格转换10,筛选尾数11,对比数据12,修改批注字体13,删除合并单元格14,物品领用报表15,条件格式设置16,多表查询,自动筛选法17,多条件查询累计汇总18,和值19,教师安排汇总(循环比较、不重复值)20,自动着色(不同个数、不同颜色)21,不重复值的个数及所在行的行数(各个值的个数、行数)22,分表自动字体格式化23,自动填充数字24,导入文本文件25,累计不变化(部循环)26,同结构多表统计汇总(Consolidate方法)27,资产负债表汇总(多工作簿汇总)28,导出到文本文件29,角度求和的自定义公式30,表单输入模板31,两表间复制与核对1,从数据源匹配取数的问题Sub 宏131()'从数据源匹配取数的问题131.xls' 2007-1-31' Shizx98'Dim a As Range, Myrng1 As Range, Myrng2 As RangeDim Myrow As IntegerDim Myrow1 As IntegerDim Myrow2 As IntegerDim Myrow3 As IntegerDim x As IntegerWorksheets("Sheet1").ActivateRange("d2").SelectSelection.CurrentRegion.SelectMyrow2 = Selection.Rows.Count 'D列数据的行数Range("a1").SelectMyrow3 = Selection.CurrentRegion.Rows.Count 'AB列数据的行数Set Myrng1 = Range(Cells(2, 1), Cells(Myrow3, 1))Set Myrng2 = Range(Cells(2, 2), Cells(Myrow3, 2))For x = 2 To Myrow2 + 1Set a = Range("D" & x)For y = 1 To Myrow3If Len(a) > 7 ThenMyrow = Application.WorksheetFunction.Match(a, Myrng1, 0)ElseMyrow = Application.WorksheetFunction.Match(a, Myrng2, 0) End IfIf Myrow = 0 ThenGoTo 100ElseRange("F1").SelectSelection.CurrentRegion.SelectMyrow1 = Selection.Rows.CountRange(Cells(Myrow + 1, 1), Cells(Myrow + 1, 2)).SelectSelection.Cut Destination:=Range(Cells(Myrow1 + 1, 6), Cells(Myrow1 + 1, 7))Selection.Delete Shift:=xlUpMyrow = 0MsgBox "已找到!"GoTo 200End If100: Next y200: Next xEnd Sub2,部分字符地址查找‘2007/1/30‘部分字符地址查找.xlsSub bfzfcz()Dim Myrow1 As IntegerDim Myrow2 As IntegerDim x%, y1%, y2%, gg%Dim AA, BBOn Error Resume NextRange("a2").SelectSelection.CurrentRegion.SelectMyrow1 = Selection.Rows.CountRange("e1").SelectSelection.CurrentRegion.SelectMyrow2 = Selection.Rows.Countgg = 2For x = 2 To Myrow2AA = Range("e" & x)For y1 = 2 To Myrow1 + 1BB = Application.WorksheetFunction.SearchB(AA, Cells(y1, 1))If BB > 0 ThenRange("g" & gg) = "A" & y1gg = gg + 1ElseEnd IfBB = 0Next y1For y2 = 2 To Myrow1 + 1BB = Application.WorksheetFunction.SearchB(AA, Cells(y2, 2))If BB > 0 ThenRange("g" & gg) = "B" & y2gg = gg + 1ElseEnd IfBB = 0Next y2'gg = gg + 1Next xEnd Sub3,多表查询汇总和重复值问题(相同行删除、循环比较)Sub 宏0204()''见汇总0204.xls' 2007-2-4'蓝桥玄霜'大汇总问题'Dim x As Integer, y As IntegerDim rng1 As Range, tbl As RangeDim n As IntegerDim Myrow1 As Integer, Myrow2 As IntegerDim rng2Application.ScreenUpdating = FalseSheets("汇总").Select '清除总表原有的数据Range("a1").SelectSet tbl = ActiveCell.CurrentRegionIf tbl.Rows.Count > 1 Thentbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, tbl.Columns.Count).ClearContents ElseEnd Ifn = 2Sheets("使用型号表").SelectRange("a1").SelectMyrow1=[a65536].End(xlUp).Row 'A列最下面一行的行数,中间有空格也行For x = 2 To Myrow1Sheets("使用型号表").SelectSet rng1 = Range("B" & x) '依次把“使用数量”的值赋给rng1变量rng2 = Range("A" & x).Text '把序号里的表格名赋给rng2变量If rng1.Value <> "" ThenSheets("汇总").Cells(1, 6).Value = rng1.ValueSheets(rng2).Select '用表格名选择表格Range("a1").SelectMyrow2 = Selection.CurrentRegion.Rows.Count '数据的行数Range(Cells(2, 2), Cells(Myrow2, 5)).Copy '复制这些数据Sheets("汇总").ActivateCells(n, 2).PasteSpecial '粘贴到汇总表Range(Cells(n, 6), Cells(Myrow2 + n - 2, 6)).Select '选择F列相同行数Selection.FormulaR1C1 = "=RC[-1]*r1c6" '将使用数量X数量Range(Cells(n, 6), Cells(Myrow2 + n - 2, 6)).Copy '复制这些数据Cells(n, 5).SelectSelection.PasteSpecial Paste:=xlValues'以“选择性粘贴”的“数值”粘贴Range(Cells(n, 6), Cells(Myrow2 + n - 2, 6)).ClearContents '清除F列数量Cells(1, 6).ClearContentsn = n + Myrow2 - 1 '为下次粘贴数据的行位置ElseEnd IfNext xbcfhz0204 '不重复汇总的宏Application.ScreenUpdating = TrueEnd SubSub bcfhz0204()'不重复汇总'蓝桥玄霜'2007-2-4Dim b As Integer, x As Integer, y As Integer, aa As Integer, yyy As IntegerDim minc As RangeDim rng1 As Range, a As RangeDim n1 As Integer, nn As Integer, Myrow1 As IntegerDim pp, pp1On Error Resume NextSheets("汇总").SelectRange("a1").SelectMyrow1 = Selection.CurrentRegion.Rows.Count 'A列数据的行数Set minc = Range("b2:b" & Myrow1)Set rng1 = Range("m2:m" & Myrow1)Range("m2").Select '求重复值个数的辅助列公式Selection.Formula ="=if((countif(minc,$b2)>1)*(match($b2,minc,0)=row($a1)),count(m$1:m1)+1,"""")"Selection.AutoFill Destination:=rng1, Type:=xlFillDefault '公式往下复制b = Application.WorksheetFunction.Max(rng1)Range("n2").Select '求重复值的辅助列公式Selection.Formula ="=if(iserror(index(minc,match(row(b1),m$2:m$65536,0))),"""",index(minc,match(row(b1),m$2:m$65536,0)))"Selection.AutoFill Destination:=Range("n2:n" & b + 1), Type:=xlFillDefault '公式往下复制Range("n2:n" & b + 1).Select'以“选择性粘贴”的“数值”粘贴n,m列,因为删除一行后,公式会重新计算'Selection.CopyRange("n2").SelectSelection.PasteSpecial Paste:=xlValuesrng1.SelectSelection.CopyRange("m2").SelectSelection.PasteSpecial Paste:=xlValuesFor x = 2 To b + 1Set a = Range("n" & x)aa = Application.WorksheetFunction.CountIf(minc, a) '计算重复值的个数Range("o" & x).Value = aann = aaRange("p1") = aRange("p2").Select '重复值所在行数的数组公式Selection.FormulaArray = "=if($p$1<>"""",if(iserror(small(if(minc=$p$1,row(minc),""""),row(1:1))),"""",small(if(minc =$p$1,row(minc),""""),row(1:1))))"Selection.AutoFill Destination:=Range("p2:p" & aa + 1), Type:=xlFillDefaultRange("p2:p" & aa + 1).SelectSelection.CopyRange("p2").SelectSelection.PasteSpecial Paste:=xlValues'以“选择性粘贴”的“数值”粘贴去除公式影响For y = 2 To nn '在重复值里循环比较pp = Range("p" & y).Value '将行数赋给变量ppFor yy = y + 1 To nn + 1pp1 = Range("p" & yy).Value '将行数赋给变量pp1If pp1 = "" ThenGoTo 100ElseEnd IfIf Cells(pp, 2) = Cells(pp1, 2) And Cells(pp, 3) = Cells(pp1, 3) And Cells(pp, 4) = Cells(pp1, 4) ThenCells(pp, 5) = Cells(pp, 5) + Cells(pp1, 5) '汇总部分Range(Cells(pp1, 1), Cells(pp1, 5)).Delete shift:=xlUp '删除多余的行For yyy = yy + 1 To nn + 1Range("p" & yyy) = Range("p" & yyy) - 1Next yyyRange("p" & yy).Delete shift:=xlUpyy = yy - 1: nn = nn - 1ElseEnd IfNext yy100: Next ynn = aaRange("p1:P" & aa + 1).ClearContents '清除辅助列数据200: Next xRange("m1").SelectSelection.CurrentRegion.ClearContents '清除辅助列数据Range("A1").Select '以下在A列加上序号n1 = Selection.CurrentRegion.Rows.CountRange("A2").SelectActiveCell.FormulaR1C1 = "1"Range("A3").SelectActiveCell.FormulaR1C1 = "2"Range("A2:A3").SelectSelection.AutoFill Destination:=Range("A2:A" & n1), Type:=xlFillDefault Range("A2").SelectEnd Sub4,工作表的名称和index号Sub Sheetsname()‘见上例的xls‘2007-2-2Dim Sht As WorksheetSheets("使用型号表").Activaten = 2For Each Sht In ActiveWorkbook.WorksheetsIf <> "汇总" And <> "使用型号表" ThenActiveSheet.Range("k" & n) = ActiveSheet.Range("l" & n) = Sht.Indexn = n + 1ElseEnd IfNext ShtEnd Sub5,重复值加色Sub 重复值加色()'重复值加色.xls' 蓝桥玄霜2007-2-2'表格中有重复值公式'Dim rng1 As Range, data As RangeDim b As IntegerSet rng1 = Range("n2:n117") ‘重复值区域b = Application.WorksheetFunction.Max(rng1) ‘重复值个数Range("B2:B117").SelectSelection.FormatConditions.DeleteFor X = 2 To b + 1 ‘用查找Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=$M$" & XSelection.FormatConditions(X - 1).Interior.ColorIndex = 3Next XEnd Sub6,统计Sub tongji()‘车次统计,见统计月报1.xls‘Excel论坛Dim Myrow1 As Integer, Myrow2 As IntegerDim Sht As Worksheet, Sht1 As WorksheetApplication.ScreenUpdating = FalseOn Error Resume NextFor Each Sht In ActiveWorkbook.Worksheets 'AB列空格填充If <> "月计" ThenSheets().SelectRange("a1").SelectMyrow1 = [a65536].End(xlUp).Row 'A列最下面一行的行数,中间有空格也行Set rng1 = Range(Cells(4, 1), Cells(Myrow1 - 1, 2))rng1.SelectIf IsError(Selection.SpecialCells(xlCellTypeBlanks)) ThenGoTo 100ElseSelection.SpecialCells(xlCellTypeBlanks).SelectRange("A5").ActivateSelection.FormulaR1C1 = "=R[-1]C"Range("A4").Selectrng1.SelectSelection.CopySelection.PasteSpecial Paste:=xlValuesApplication.CutCopyMode = FalseRange("A4").SelectEnd IfElseEnd If100: Next ShtSheets("月计").SelectSet Sht1 = Sheets("月计")Range("a1").SelectMyrow1 = [a65536].End(xlUp).RowMyrow1 = Myrow1 - 1Range(Cells(4, 4), Cells(Myrow1, 11)).ClearContentsFor x = 4 To Myrow1fa = Range("a" & x).Valuedao = Range("b" & x).ValueIf fa = "" And dao = "" ThenGoTo 200ElseEnd IfFor n = 1 To 10Sheets(n).ActivateRange("a1").SelectMyrow2 = [a65536].End(xlUp).RowMyrow2 = Myrow2 - 1For y = 4 To Myrow2fa1 = Range("a" & y).Valuedao1 = Range("b" & y).ValueIf fa = fa1 And dao = dao1 ThenSht1.Range("d" & x) = Sht1.Range("d" & x) + Range("d" & y) '汇总Sht1.Range("e" & x) = Sht1.Range("e" & x) + Range("e" & y)Sht1.Range("f" & x) = Sht1.Range("f" & x) + Range("f" & y)Sht1.Range("g" & x) = Sht1.Range("g" & x) + Range("g" & y)Sht1.Range("h" & x) = Sht1.Range("h" & x) + Range("h" & y)Sht1.Range("i" & x) = Sht1.Range("i" & x) + Range("i" & y)Sht1.Range("j" & x) = Sht1.Range("j" & x) + Range("j" & y)Sht1.Range("k" & x) = Sht1.Range("k" & x) + Range("k" & y)ElseEnd IfNext yNext nSheets("月计").Select200: Next xSheets("月计").SelectApplication.ScreenUpdating = TrueEnd Sub7,最大或最小‘Excel论坛‘最大或最小.xlsSub MaxMin()Dim rng1 As RangeDim x As Integer, b As IntegerDim a(12)Range("a14").Value = ""For x = 1 To 12Cells(2, x + 3).SelectSet rng1 = Cells(2, x + 3)a(x) = Selection.Valueb = Application.WorksheetFunction.Find("/", rng1)a(x) = Left(rng1, b)a(x) = Val(a(x))Next xMymax = Application.WorksheetFunction.Max(a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8), a(9), a(10), a(11), a(12))Mymin = Application.WorksheetFunction.Min(a(1), a(2), a(3), a(4), a(5), a(6), a(7), a(8), a(9), a(10), a(11), a(12))If a(1) = Mymax ThenRange("a14").FormulaR1C1 = "最大"ElseIf a(1) = Mymin ThenRange("a14").FormulaR1C1 = "最小"ElseEnd IfEnd IfEnd Sub8,最后一记录(定义名称)Sub zhytjl0206()'最后一次的那条记录.xls'Shizx98'2007-2-6‘/dispbbs.asp?BoardID=3&ID=219549&replyID=&skin=0Dim b As Integer, x As Integer, y As Integer, aa As IntegerDim minc As RangeDim rng1 As Range, a As RangeDim nn As Integer, Myrow1 As IntegerDim pp, pp1Dim Sht1 As Worksheet, Sht2 As WorksheetOn Error Resume NextApplication.ScreenUpdating = FalseSet Sht1 = Sheets(1): Set Sht2 = Sheets(3)Sht1.Activates.Add Name:="data1", RefersToR1C1:= _ "=OFFSET(Sheet1!R1C1,1,,COUNTA(Sheet1!R2C1:R65535C1),)"Range("n1").SelectSelection.CurrentRegion.ClearContents '清除辅助列数据Sheet2.ActivateRange("a1").SelectSelection.CurrentRegion.ClearContents '清除上次数据Sht1.Range("a1:g1").Copy Sheet2.[a1]Sht1.ActivateRange("a1").SelectMyrow1 = Selection.CurrentRegion.Rows.Count 'A列数据的行数Set minc = Range("a2:a" & Myrow1)Set rng1 = Range("n2:n" & Myrow1)BcfzGS '转求不重复值宏For x = 2 To b + 1FuzulieGS '转辅助列公式宏Range("p2:p" & aa + 1).SelectSelection.Copy Sht2.Range("a2")Application.CutCopyMode = FalseSht1.Activatepp = Sht1.Range("p" & 2).Value '将行数赋给变量ppRange(Cells(pp, 7), Cells(pp + aa - 1, 7)).SelectSelection.Copy Sht2.Range("b2") '时间复制到表2Sht2.ActivateCells(2, 3).SelectSelection.Formula = "=datevalue(rc[-1])+timevalue(rc[-1])" '时间值公式If aa > 1 ThenSelection.AutoFill Destination:=Range("c2:c" & aa + 1), Type:=xlFillDefault '公式往下复制Range("a2:c" & aa + 1).SelectSelection.Sort Key1:=Range("C2"), Order1:=xlDescending, Header:=xlNo, _OrderCustom:=2, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _:=xlPinYinElseEnd Ifpp1 = Range("a2").ValueSheets(2).SelectFor xx = 1 To 7Cells(x, xx) = Sht1.Cells(pp1, xx)Next xxnn = aaSht1.ActivateRange("p1:P" & aa + 1).ClearContents '清除辅助列数据Sht2.ActivateRange(Cells(1, 1), Cells(aa + 1, 3)).ClearContents200: Next xSht1.ActivateRange("m1").SelectSelection.CurrentRegion.ClearContents '清除辅助列数据Sheets(2).ActivateRange("a1:g" & b + 1).Select ‘排序Selection.Sort Key1:=Range("a1"), Order1:=xlAscending, Header:=xlGuess, _OrderCustom:=2, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _:=xlPinYin加边框'转加边框宏Range("A1").SelectApplication.ScreenUpdating = TrueEnd SubSub BcfzGS()'不重复值公式Range("n2").Select '辅助列公式求有几个不重复值Selection.FormulaArray = "=index(a:a,min(if(countif(n$1:n1,data1),65536,row(data1))))&"""""Selection.AutoFill Destination:=rng1, Type:=xlFillDefault '公式往下复制b = Application.WorksheetFunction.CountIf(rng1, "4*")End SubSub FuzulieGS()'某个不重复值的个数和所在行数的数组公式Sht1.SelectSet a = Range("n" & x)aa = Application.WorksheetFunction.CountIf(minc, a) '计算某个不重复值的个数Range("o" & x).Value = aann = aaRange("p1") = Val(a)Range("p2").Select '某个不重复值所在行数的数组公式Selection.FormulaArray = "=if($p$1<>"""",if(iserror(small(if(minc=$p$1,row(minc),""""),row(1:1))),"""",small(if(minc =$p$1,row(minc),""""),row(1:1))))"If aa > 1 ThenSelection.AutoFill Destination:=Range("p2:p" & aa + 1), Type:=xlFillDefaultElseEnd IfEnd SubSub 加边框()BorderVars(1) = xlEdgeLeftBorderVars(2) = xlEdgeTopBorderVars(3) = xlEdgeBottomBorderVars(4) = xlEdgeRightBorderVars(5) = xlInsideVerticalBorderVars(6) = xlInsideHorizontalRange("a1:g" & b + 1).SelectSelection.Borders(xlDiagonalDown).LineStyle = xlNoneSelection.Borders(xlDiagonalUp).LineStyle = xlNoneFor x = 1 To 6With Selection.Borders(BorderVars(x)).LineStyle = xlContinuous.Weight = xlThin.ColorIndex = xlAutomaticEnd WithNextEnd SubSub zhytjl0215()'最后一条记录0215.xls'蓝桥玄霜,'2007-2-15'根据czzqbµ的数组公式修改'在表1的H列加了时间转换公式Dim b As Integer, x As Integer, y As IntegerDim minc As RangeDim rng1 As Range, a As RangeDim Myrow1 As IntegerDim Sht1 As Worksheet, Sht2 As WorksheetDim BorderVars(6) As VariantOn Error Resume NextApplication.ScreenUpdating = FalseSet Sht1 = Sheets(1): Set Sht2 = Sheets(2)Sht1.Activate ‘定义动态区域名称s.Add Name:="data1", RefersToR1C1:= _ "=OFFSET(Sheet1!R1C1,1,,COUNTA(Sheet1!R2C1:R65535C1),)"s.Add Name:="shiji", RefersToR1C1:= _ "=OFFSET(Sheet1!R1C8,1,,COUNTA(Sheet1!R2C8:R65535C8),)"Range("n1").SelectSelection.CurrentRegion.ClearContentsSheet2.ActivateRange("a1").SelectSelection.CurrentRegion.ClearContentsSht1.Range("a1:g1").Copy Sheet2.[a1]Sht1.ActivateRange("a1").SelectMyrow1 = Selection.CurrentRegion.Rows.CountSet minc = Range("a2:a" & Myrow1)Set rng1 = Range("n2:n" & Myrow1)Range("n2").Select '¸'辅助列公式求不重复值Selection.FormulaArray = "=index(a:a,min(if(countif(n$1:n1,minc),65536,row(minc))))&"""""Selection.AutoFill Destination:=rng1, Type:=xlFillDefault‘不重复值的个数b = Application.WorksheetFunction.CountIf(rng1, "4*")Range("n2:n" & b + 1).SelectSelection.CopySelection.PasteSpecial Paste:=xlValuesRange(Cells(2, 14), Cells(1 + b, 14)).Copy Sht2.Cells(2, 1)Sht2.ActivateSht2.[b2].SelectSelection.FormulaR1C1 = "=index(mydata,match(value(rc[-1]),data1,0),2)"Sht2.[c2].SelectSelection.Formula = "=index(mydata,match(value(rc[-2]),data1,0),3)"Sht2.[d2].SelectSelection.Formula = "=index(mydata,match(value(rc[-3]),data1,0),4)"Sht2.[e2].SelectSelection.Formula = "=index(mydata,match(value(rc[-4]),data1,0),5)"Sht2.[f2].SelectSelection.Formula = "=index(mydata,match(value(rc[-5]),data1,0),6)"Sht2.[g2].SelectSelection.FormulaArray = "=max(if(data1=value(rc[-6]),shiji))" ‘求时间最后的数组公式,by:czzqbRange("b2:g2").SelectSelection.AutoFill Destination:=Range("b2:g" & b + 1), Type:=xlFillDefaultSheets(2).ActivateRange("a1:g" & b + 1).Select ‘排序Selection.Sort Key1:=Range("a1"), Order1:=xlAscending, Header:=xlGuess, _OrderCustom:=2, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _:=xlPinYinSelection.Borders(xlDiagonalDown).LineStyle = xlNoneSelection.Borders(xlDiagonalUp).LineStyle = xlNone ‘加边框BorderVars(1) = xlEdgeLeftBorderVars(2) = xlEdgeTopBorderVars(3) = xlEdgeBottomBorderVars(4) = xlEdgeRightBorderVars(5) = xlInsideVerticalBorderVars(6) = xlInsideHorizontalFor x = 1 To 6With Selection.Borders(BorderVars(x)).LineStyle = xlContinuous.Weight = xlThin.ColorIndex = xlAutomaticEnd WithNextrng1.ClearContentsRange("A1").SelectApplication.ScreenUpdating = TrueEnd Sub9,大港表格转换‘大港.xlsSub dagang()Dim Sht1 As Worksheet, Sht2 As WorksheetDim x As Integer, y As IntegerDim n As Integer, m As IntegerDim n1 As IntegerApplication.ScreenUpdating = FalseSet Sht1 = ActiveWorkbook.Sheets(1)Set Sht2 = Sheets(2)Sht2.Activate ‘清除原有数据Range("a1").SelectActiveCell.CurrentRegion.ClearContentsWith Sht2 ‘表格的表头赋值.Cells(1, 1) = "编号".Cells(1, 2) = "".Cells(1, 3) = "性别".Cells(1, 4) = "年龄".Cells(1, 5) = "职务".Cells(1, 6) = "家庭地址".Cells(1, 7) = "户口性质及所在地".Cells(1, 8) = "身体状况".Cells(1, 9) = "备注"End Withn = 2: m = 2For x = 1 To 9For y = 3 To 168 Step 11 ‘两分表间隔11行If Sht1.Cells(y, m) <> "" Then ‘如果值为空,则程序结束With Sht2.Cells(n, 2) = Sht1.Cells(y, m).Cells(n, 3) = Sht1.Cells(y, m + 2).Cells(n, 4) = Sht1.Cells(y, m + 4).Cells(n, 5) = Sht1.Cells(y, m + 6).Cells(n, 6) = Sht1.Cells(y + 1, m).Cells(n, 7) = Sht1.Cells(y + 1, m + 4).Cells(n, 8) = Sht1.Cells(y + 3, m).Cells(n, 9) = Sht1.Cells(y + 4, m + 4)End Withn = n + 1ElseGoTo 100End IfNext y'Stopy = 3: m = m + 9Next x100: Range("a1").Select ‘加编号n1 = [b65536].End(xlUp).RowRange("A2").SelectActiveCell.FormulaR1C1 = "1"Range("A3").SelectActiveCell.FormulaR1C1 = "2"Range("A2:A3").SelectSelection.AutoFill Destination:=Range("A2:A" & n1), Type:=xlFillDefault Range("A2").SelectApplication.ScreenUpdating = TrueEnd Sub10,筛选尾数/dispbbs.asp?boardid=1&id=220360&star=1#220360Sub weisu()'筛选尾数0209.xls'by:Shizx98'2007-2-9Dim Myrow1 As IntegerDim Mymax As IntegerDim x%, y%, yy%, nn%Application.ScreenUpdating = FalseRange("n1:s30").ClearContents ‘清除原有数据Range("a1").SelectSelection.CurrentRegion.Copy Range("b1")Myrow1 = Selection.CurrentRegion.Rows.CountRange("c1").SelectSelection.Formula = "=right(rc[-1],4)" ‘取四位尾数Range("g1").SelectSelection.Formula = "=left(rc[-4],1)" ‘分成四列Range("f1").SelectSelection.Formula = "=mid(rc[-3],2,1)"Range("e1").SelectSelection.Formula = "=mid(rc[-2],3,1)"Range("d1").SelectSelection.Formula = "=right(rc[-1],1)"Range("c1:g1").SelectSelection.AutoFill Destination:=Range("c1:g" & Myrow1), Type:=xlFillDefault ‘公式复制For yy = 2 To 7Select Case yyCase 2Range("h1").SelectSelection.Formula = "=if(and(rc[-4]=rc[-3],rc[-3]=rc[-2],rc[-2]=rc[-1]),1,"""")" ‘判断四位尾数相等Selection.AutoFill Destination:=Range("h1:h" & Myrow1), Type:=xlFillDefaultRange("n1") = "尾数四位相同" 'AAAACase 3Range("i1").SelectSelection.Formula = "=if(and(rc[-4]=rc[-3],rc[-3]=rc[-5],rc[-3]<>rc[-2]),1,"""")"Selection.AutoFill Destination:=Range("i1:i" & Myrow1), Type:=xlFillDefault ‘判断三位尾数相等Range("o1") = "尾数三位相同" 'BAAACase 4Range("j1").SelectSelection.Formula = "=if(and(rc[-6]=rc[-5],rc[-5]<>rc[-4],rc[-4]<>rc[-3]),1,"""")"‘判断两位尾数相等Selection.AutoFill Destination:=Range("j1:j" & Myrow1), Type:=xlFillDefaultRange("p1") = "尾数两位相同" 'AACase 5Range("k1").SelectSelection.Formula = "=if(and(rc[-6]=rc[-7],rc[-4]=rc[-5],rc[-5]<>rc[-6]),1,"""")" 'AABBSelection.AutoFill Destination:=Range("k1:k" & Myrow1), Type:=xlFillDefaultRange("q1") = "尾数AABB"Case 6Range("l1").SelectSelection.Formula = "=if(and(rc[-6]=rc[-7],rc[-7]<>rc[-8],rc[-5]=rc[-6]),1,"""")" 'AAABSelection.AutoFill Destination:=Range("l1:l" & Myrow1), Type:=xlFillDefaultRange("r1") = "尾数AAAB"Case 7Range("m1").SelectSelection.Formula = "=if(and(rc[-9]=rc[-7],rc[-8]=rc[-6],rc[-7]<>rc[-8]),1,"""")" 'ABABSelection.AutoFill Destination:=Range("m1:m" & Myrow1), Type:=xlFillDefaultRange("s1") = "尾数ABAB"End SelectNext yyRange("c1:m" & Myrow1).SelectSelection.CopyRange("c1").PasteSpecial Paste:=xlValues '以“选择性粘贴”的“数值”粘贴去除公式影响500: nn = Myrow1For y = 1 To 6n = 2Mymax = Application.WorksheetFunction.Sum(Range(Cells(1, y + 7), Cells(Myrow1, y + 7)))If Mymax = 0 ThenGoTo 1000ElseEnd IfFor x = 1 To nnIf Cells(x, y + 7) = 1 ThenCells(n, y + 13) = Cells(x, 2)Range(Cells(x, 2), Cells(x, 13)).Delete shift:=xlUp ‘有相同的就复制后删除B列的一个,连一行公式数据也删除n = n + 1: nn = nn - 1ElseEnd IfNext x'Stop1000: Next yRange(Cells(1, 3), Cells(Myrow1, 13)).ClearContentsColumns("C:M").SelectSelection.EntireColumn.Hidden = True ‘隐藏C-M列Application.ScreenUpdating = TrueEnd Sub11,对比数据‘/dispbbs.asp?boardID=3&ID=220430&page=1&px=0 ‘数据比对.xlsSub duibisujue()Dim Myrow1 As IntegerDim x%, y%, xx%, nn%Application.ScreenUpdating = FalseRange("a1").SelectMyrow1 = Selection.CurrentRegion.Rows.Countnn = Myrow1: n = 1For x = 1 To nnxx = 0If Cells(x, 1) = "" ThenGoTo 100ElseEnd IfFor y = 1 To nnIf Cells(x, 1) = Cells(y, 2) And Cells(x, 1) <> "" ThenCells(n, 5) = Cells(x, 1): Cells(n, 6) = Cells(y, 2)n = n + 1: xx = 1Cells(x, 1).Delete shift:=xlUpCells(y, 2).Delete shift:=xlUpnn = nn - 1y = y - 1ElseEnd IfNext yIf xx = 1 Thenx = x - 1ElseEnd IfIf nn < x ThenGoTo 100ElseEnd IfNext x100:Application.ScreenUpdating = TrueEnd Sub12,修改批注字体Sub 修改批注字体()' Shizx98 2007-2-10'/dispbbs.asp?BoardID=1&ID=220734&replyID=&skin=0 Dim c As CommentSet cmt = Worksheets(1).CommentsFor Each c In cmtc.Visible = Truec.Shape.Select TrueWith Selection.Font.Name = "隶书".Size = 20End Withc.Visible = FalseNextEnd Sub13,删除合并单元格' 分部.xls' Shizx98' 2007-2-11'/dispbbs.asp?boardID=2&ID=220741&page=1&px=0Dim ma As RangeDim Myrow1 As Integer, nn As Integer, gesu As IntegerDim XuhaoDim rng1 As RangeDim n%, x%, y%, a%, b%Application.ScreenUpdating = FalseRange("a1").SelectMyrow1 = Selection.CurrentRegion.Rows.CountSet rng1 = Range(Cells(1, 1), Cells(Myrow1, 1)) = "data" ‘区域命名n = 1: nn = Myrow1For x = 1 To nnXuhao = Cells(x, 1)If Xuhao = "" Or Not (IsNumeric(Xuhao)) Thennn = nn - 1: GoTo 200Elsegesu = Application.WorksheetFunction.CountIf(rng1, Xuhao) ‘重复值个数If gesu = 1 ThenGoTo 200ElseRange("p1") = Cells(x, 1)Cells(1, 17) = gesuCells(2, 17).SelectSelection.FormulaArray = "=small(if(data=$p$1,row(data)),row(1:1))" ‘重复值所在行数Selection.AutoFill Destination:=Range("q2:q" & gesu + 1), Type:=xlFillDefault '公式往下复制Range("q2:q" & gesu + 1).SelectSelection.CopyRange("q2").SelectSelection.PasteSpecial Paste:=xlValues '以"选择性粘贴"的"数值"粘贴去除公式影响b = 0For y = 2 To gesun = Cells(y + 1, 17) - bCells(n, 1).SelectSet ma = Cells(n, 1)With maIf .MergeCells Thena = ma.MergeArea.Countb = b + a: nn = nn - aElseRange(Cells(n, 1), Cells(n, 13)).SelectSelection.Delete shift:=xlUpa = 1: nn = nn - 1:b = b + aGoTo 100End IfEnd WithIf a > 1 ThenRange(Cells(n, 1), Cells(n + a - 1, 13)).SelectSelection.Delete shift:=xlUpElseEnd If100: Next yRange("q1:q" & gesu + 1).ClearContentsRange("p1").ClearContentsEnd IfEnd If200: 'StopNext xApplication.ScreenUpdating = TrueEnd Sub14,物品领用报表Sub 宏9()' 赋予“报表制表”按钮的宏Macro‘进出货领用表.xls' 蓝桥玄霜2006-12-19Dim PitItemVar As PivotItemDim Pivot1 As PivotTableDim MyItem As VariantDim x, y, xx, xcolumn As IntegerDim BorderVars(6) As VariantDim yearcpage, monthcpage As Variant。

Excel常见宏(简洁版)

Excel常见宏(简洁版)

Excel常见宏(简洁版)清除剪贴板Sub 清除剪贴板()Application.CutCopyMode = FalsemandBars(\End Sub批量清除软回车Sub 批量清除软回车()'也可直接使用Alt+10或13替换Cells.Replace What:=Chr(10), Replacement:=\ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False End Sub判断指定文件是否已经打开Sub 判断指定文件是否已经打开() Dim x As IntegerFor x = 1 To Workbooks.CountIf Workbooks(x).Name = \函数.xls\ '文件名称 MsgBox \文件已打开\ Exit Sub End If NextMsgBox \文件未打开\End Sub当前文件另存到指定目录Sub 当前激活文件另存到指定目录()ActiveWorkbook.SaveAs Filename:=\信件\\\End Sub另存指定文件名Sub 另存指定文件名()ActiveWorkbook.SaveAs ThisWorkbook.Path & \别名.xls\End Sub以本工作表名称另存文件到当前目录Sub 以本工作表名称另存文件到当前目录()ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & \End Sub将本工作表单独另存文件到Excel当前默认目录Sub 将本工作表单独另存文件到Excel当前默认目录() ActiveSheet.CopyActiveWorkbook.SaveAs Filename:= & \End Sub以活动工作表名称另存文件到Excel当前默认目录Sub 以活动工作表名称另存文件到Excel当前默认目录()ActiveWorkbook.SaveAs Filename:= & \xlNormal, Password:=\ , CreateBackup:=False End Sub另存所有工作表为工作簿Sub 另存所有工作表为工作簿() Dim sht As WorksheetApplication.ScreenUpdating = False ipath = ThisWorkbook.Path & \For Each sht In Sheets sht.CopyActiveWorkbook.SaveAs ipath & & \工作表名称为文件名)'ActiveWorkbook.SaveAs ipath & & Trim(sht.[d15]) & \(文件名称 & D15单元内容)'ActiveWorkbook.SaveAs ipath & Trim(sht.[d15]) & \ '(文件名称为D15单元内容) ActiveWorkbook.Close NextApplication.ScreenUpdating = True End Sub以指定单元内容为新文件名另存文件Sub 以指定单元内容为新文件名另存文件()ThisWorkbook.SaveAs Filename:=ThisWorkbook.Path & \End Sub以当前日期为新文件名另存文件Sub 以当前日期为新文件名另存文件()ThisWorkbook.SaveAs ThisWorkbook.Path & \End SubSub 以当前日期为名称另存文件()ActiveWorkbook.SaveAs Filename:=Date & \ End Sub以当前日期和时间为新文件名另存文件Sub 以当前日期和时间为新文件名另存文件()ThisWorkbook.SaveAs ThisWorkbook.Path & \年\月\日\时\分\秒\End Sub另存本表为TXT文件Sub 另存本表为TXT文件() Dim s As StringDim FullName As String, rng As Range Application.ScreenUpdating = FalseFullName = ( & \ '以当前表名为TXT文件名' FullName = Replace(ThisWorkbook.FullName, \ '以当前文件名为TXT文件名' FullName = Replace(ThisWorkbook.FullName, \'以文件名&表名为TXT文件名Open FullName For Output As #1 '以读写方式打开文件,每次写内容都会覆盖原先的内容'参考帮助,fullname为文件全名For Each rng In Range(\ s = s & IIf(s = \|\If rng.Column = Range(\ Print #1, s & \|\'把数据写到文本文件里s = \ End If NextClose #1 '关闭文件Application.ScreenUpdating = True MsgBox \数据已导入文本\ End Sub引用指定位置单元内容为部分文件名另存文件Sub 引用指定位置单元内容为部分文件名另存文件()ActiveWorkbook.SaveAs Filename:=\信件\\\解答\郎雀.xls\End Sub将A列数据排序到D列Sub 将A列数据排序到D列() [d:d] = [a:a].Value[d:d].Sort Key1:=Range(\End Sub将指定范围的数据排列到D列Sub 将指定范围的数据排列到D列() Dim arr1, arr2, i%, x arr1 = Range(\ReDim arr2(1 To UBound(arr1, 1) * UBound(arr1, 2), 1 To 1) For Each x In Application.Transpose(arr1) i = i + 1 arr2(i, 1) = x Next xRange(\End Sub 光标移动Sub 光标移动()ActiveCell.Offset(1, 2).Select '向下移动1行,向右移动2列 End Sub光标所在行上移一行Sub 光标所在行上移一行() Dim i%i = Split(ActiveCell.Address, \ If i > 1 Then Rows(i).CutRows(i - 1).Insert Shift:=xlDown End If End Sub加数据有效限制Sub 加数据有效限制()With Selection.Validation .Delete.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ xlBetween, Formula1:=\bigsun010@\ .IgnoreBlank =False .InCellDropdown = False .InputTitle =\ .ErrorTitle = \ .InputMessage = \.ErrorMessage = \要奋斗就会有牺牲,死人的事是经常发生的。

ExcelVBA编程与宏自动打印如何设定宏的自动打印和批量打印

ExcelVBA编程与宏自动打印如何设定宏的自动打印和批量打印

ExcelVBA编程与宏自动打印如何设定宏的自动打印和批量打印Excel VBA编程与宏自动打印如何设定宏的自动打印和批量打印Microsoft Excel是广泛使用的电子表格软件之一,而借助Excel的VBA编程和宏功能,用户可以轻松自动化各种重复性任务,比如自动打印和批量打印文档。

本文将介绍如何使用Excel VBA编程和宏来设置自动打印和批量打印的功能。

自动打印是指在特定条件下,Excel会自动执行打印操作,而不需要用户手动操作。

一般情况下,用户可以设置特定的条件,比如在保存文件时自动打印、在工作表被更新时自动打印等。

下面是设定宏的自动打印的步骤:第一步,打开Excel软件并进入“开发工具”选项卡。

如果你的Excel 软件没有显示“开发工具”选项卡,你需要先进行设置。

在Excel中,点击“文件”选项卡,在弹出的菜单中选择“选项”,然后在弹出的选项对话框中点击“自定义功能区”。

在右侧的菜单栏中勾选“开发工具”,最后点击“确定”按钮完成设置。

第二步,点击“开发工具”选项卡中的“Visual Basic”按钮,进入VBA 编辑器环境。

第三步,进入VBA编辑器后,你需要创建一个宏。

在VBA编辑器的左侧“项目资源管理器”窗口中,右键点击任意一个项目,然后选择“插入”->“模块”。

在弹出的模块窗口中,你可以输入VBA代码来编写宏。

第四步,编写宏的代码。

在VBA编辑器的右侧窗口中,你可以编写自己的VBA代码实现自动打印的功能。

比如,你可以使用以下的VBA代码来实现在保存时自动打印的功能:```Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)'设置自动打印的代码ActiveSheet.PrintOutEnd Sub```在这个例子中,我们使用了Workbook_BeforeSave事件来在保存文件时触发打印操作。

excel宏代码编写教程

excel宏代码编写教程

excel宏代码编写教程
下面是一份简单的Excel宏代码编写教程,请注意文中不能有标题相同的文字:
1. 打开Excel并新建一个工作簿。

2. 按下"Alt+F11"打开VBA编辑器。

3. 在VBA编辑器中,点击"插入"菜单然后点击"模块"。

这将创建一个新的模块。

4. 在模块中编写你的宏代码。

以下是一个示例:
```vba
Sub HelloWorld()
MsgBox "Hello, World!"
End Sub
```
上述代码是一个简单的示例,当执行该宏时,会弹出一个消息框显示"Hello, World!"。

5. 编写完宏代码后,按下"Ctrl+S"保存你的工作簿。

6. 关闭VBA编辑器。

7. 返回Excel界面,在工具栏上找到开发工具栏。

如果工具栏中没有开发工具栏,可以按下"Alt+F8"打开宏对话框,然后点击"选项"按钮,在弹出的对话框中选择"显示开发工具栏"。

8. 在开发工具栏中点击"宏"按钮。

这将打开宏对话框。

9. 在宏对话框中选择你编写的宏,并点击"运行"按钮。

这将执行你的宏代码。

以上就是一个简单的Excel宏代码编写教程,请根据你的具体需求编写适合自己的宏代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel简明宏教程之一Microsoft excel是一款功能非常强大的电子表格软件。

它可以轻松地完成数据的各类数学运算,并用各种二维或三维图形形象地表示出来,从而大大简化了数据的处理工作。

但若仅利用excel的常用功能来处理较复杂的数据,可能仍需进行大量的人工操作。

但excel的强大远远超过人们的想象--宏的引入使其具有了无限的扩展性,因而可以很好地解决复杂数据的处理问题。

随着支持Windows的应用程序的不断增多和功能的不断增强,越来越多的程序增加了宏处理来方便用户的自由扩展。

但初期各应用程序所采用的宏语言并不统一,这样用户每使用一种应用程序时都得重新学习一种宏语言。

为了统一各种应用程序下的宏,Microsoft推出了VBA(Visual Basic for Applications)语言。

VBA是从流行的Visual Basic编程语言中派生出来的一种面向应用程序的语言,它适用于各种Windows应用程序,可以解决各应用程序的宏语言不统一的问题。

除此之外,使用VBA语言还有如下优点:1、VBA是一种通用程序语言,通过它不仅可以共享Microsoft相关的各种软件(如excel、word、access)……,而且随着其它的一些软件(如大名鼎鼎的AutoCAD2000)等对VBA的支持,这些软件也已进入到了VBA的控制范围;2、可以将用VBA编写的程序复制到Visual Basic中调试并运行,从而实现用Visual Basic来控制有关的应用程序;3、VBA提供的大量内部函数大大简化了用户的操作。

对于而今的宏,不仅语言统一规范,而且其功能也已非常强大。

但在大多数介绍excel的"傻瓜书"、"指南"、"入门与提高"等参考书中往往略过不提,或浅浅带过,读者从中获得的有关知识往往不足以应付处理复杂数据的需求。

为了完成工作,就让我们一起来学习"宏"的妙用吧。

一、找到宏2007中找到宏:左上角OFFICE按钮——准备——excel选项——信任中心——信任中心设置——宏设置——启用宏。

首先需要明确的是,本文不可能教会您关于宏的所有内容。

您需要学会利用"录制宏"的方法来学习宏:点击excel" 工具"下拉菜单中"宏"下->“录制新宏",此后可象平时一样进行有关操作,待完成后停止录制。

然后再点击"工具"下拉菜单中"宏"下"宏"的"编辑"选项即可打开刚才所录制的宏的Visual Basic源程序,并且可以在此时的"帮助"下拉菜单中获得有关的编程帮助。

对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。

4、单元格:Cells、ActiveCell、Range、AreasCells(row, column)代表单个单元格,其中row为行号,column为列号。

如可以用Cells(1,1)、Cells(10,4)来引用"A1"、"D10" 单元格。

ActiveCell代表活动工作表的活动单元格,或指定工作表的活动单元格。

Range代表工作表中的某一单元格、某一行、某一列、某一选定区域(该选定区域可包含一个或若干连续单元格区域)或者某一三维区域。

可用Range(arg)来引用单元格或单元格区域,其中arg可为单元格号、单元格号范围、单元格区域名称。

如Range("A5")、Range("A1:H8")、Range("Criteria")。

虽然可用Range("A1")返回单元格A1,但用Cells更方便,因为此时可用变量指定行和列。

[dvnews_page] 可将Range与Cells结合起来使用,如Range(Cells(1,1),Cells(10,10))代表单元格区域"A1:J10";而expression.Cells(row,column)返回单元格区域中的一部分,其中expression是返回Range的表达式,row和column为相对于该区域的左上角偏移量。

如由Range("C5:C10").Cells(1,1)引用单元格C5。

Areas 为选定区域内的连续单元格块的集合,其成员是Range对象。

而其中的每个Range对象代表选定区域内与其它部分相分离的一个连续单元格块。

某些操作不能在选定区域内的多个单元格块上同时执行;必须在选定区域内的单元格块数Areas.Count上循环,对每个单独的单元格块分别执行该操作。

此时,可用Areas(index)从集合中返回单个Range对象,其中index为单元格块编号;如Areas(1)。

5、行与列:Rows、Columns、Row、ColumnRows、Columns分别代表活动工作表、单元格区域范围Range、指定工作表中的所有行数、列数。

对于一个多选单元格区域范围Range的Rows、Columns,只返回该范围中第一个区域的行数、列数。

例如,如果Range对象有两个区域(areas)A1:B2和C3:D4,Rows.Count返回2而不是4。

可通过Rows(行号)、Columns(列号)来引用相应的行与列;如Rows(3)、Columns(4)分别对应第三行、D列。

利用Rows、Column可以获得区域中第一块的第一行行号、第一列列号,所得值均以十进制数表示。

三、处理单元格1、直接赋值与引用将变量、常量值直接赋给单元格、或将单元格的值直接赋给变量、常量,这是在excel中最简单的单元格赋值及引用方法。

如下例将工作表"Sheet1"A1单元格的值赋给Integer变量I,并将I+1的值赋给当前工作表中的B1单元格:Dim I As IntegerI=Worksheets ("Sheet1").Cells (1, 1)Cells(1,2).Select '选定B1单元格,使其成为当前单元格ActiveCell=I+1 '以I+1为当前单元格赋值2、用公式赋值在宏的使用中,可能会更多地用公式来给单元格赋值。

如下例将相对于活动单元格左侧第4列、向上第6行至向上第2行的单元格数值之和赋给活动单元格(以本行、本列为第0行、0列):ActiveCell.Formula="=AVERAGE(R[-6]C[-4]:R[-2]C[-4])"3、引用其它工作表中的单元格当赋值公式中需要引用其它工作表中的单元格时,在被引用的单元格前加上"工作表名!"即可。

如以下即在赋值中引用了"Sheet1"工作表中的A1至A4单元格:Range("E10").Formula="=SUM(Sheet1!R1C1:R4C1)"但需注意的是:当被引用的工作表名中含有某些可能引起公式歧义的字符时,需要用单引号'将工作表名括起来。

如:Worksheets("Sheet1").ActiveCell.Formula="=Max('1-1剖面'!D3:D5)"4、引用其它工作簿中的单元格在被引用单元格所在工作表名前加上"[工作簿名]",即可引用其它工作簿中的单元格。

如:ActiveCell.Formula="=MAX([Book1.xls]Sheet3!R1C:RC[4])"同样需注意的是:当被引用的工作簿名中含有某些可能引起公式歧义的字符时,需要用中括号"["、"]"及单引号'将工作簿名括起来。

如:Cells(1,2).Formula="=MIN('[1995-2000总结.xls]1995-1996年'! $A$1:$A$6)"5、避免循环引用在上述公式赋值过程中,应避免在公式中引用被赋值的单元格,防止循环引用错误。

6、添加批注可按如下方法格给单元格添加批注:Dim 批注文本As String批注文本="批注示例" '准备批注文本ActiveCell.AddComment '添加批注ment.T ext Text:=临时'写入批注文本ment.Visible=False '隐藏批注[dvnews_page]7、添加、删除、复制、剪切、粘贴单元格Range("D10").Insert Shift:=xlToRight '在D10单元格处添加一新单元格,原D10格右移Range("C2").Insert Shift:=xlDown '在C2单元格处添加一新单元格,原C2格下移Rows(2).EntireRow.Insert '在第2行前添加一空白行,原第2行下移Columns(3).EntireColumn.Insert '在C列前添加一空白列,原C列右移Columns("A:D").Delete Shift:=xlToLeft '删除A列至D列,其右侧列左移Rows("3:5").Delete Shift:=xlUp '删除第3行至第5行,其下方行上移Range("B2").EntireRow.Delete '删除第2行Range("C4").EntireColumn.Delete '删除C列Range("B10:C13").Copy '复制B10至C13单元格区域Cells(1,2).Cut '剪切B1单元格Range("D10").SelectActiveSheet.Paste '自D10单元格起粘贴剪贴板中的内容四、图表1、工作表图表以下为一添加工作表图表的实例。

Charts.Add after:=Worksheets("Sheet1") '在"Sheet1"工作表之后添加新图表工作表ActiveChart.ChartType=xlXYScatterSmooth '图表类型为XY平滑线散点图ActiveChart.SetSourceData Source:=Sheets("结点坐标").Range("A1:B69"), PlotBy:= _ xlColumns '图表数据来源于"结点坐标"工作表的A1至B69单元格,且按列绘图。

相关文档
最新文档