当前位置:主页 > Office办公 > Excel专区 > Excel函数

最新发布

如何在Excel工作表中添加最后保存时间
如何在Excel工作表中添加最后保存时间

有时我们在Excel中制作的工作表需要反复修改,并保存为多个版本。修改的次数多了,很容易混淆。如果能把工作簿的最后保存日期和时间显示在工作表的某个单元格或页眉页脚中,查看起来就非常方便了。用VBA代码就能够轻松地实现这一点,方法如下:1.按Alt+F11,打开VBA编辑器。2.在“工程”窗口中,双击“ThisWorkBook”,在右侧的代码窗口中输入下列代码:Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)ActiveSheet.Range("G3").Value = Format(Now, "yyyy年m月d日 hh:mm:ss")End Sub说明:上述代码将工作簿保存的日期和时间保存在活动工作表的“G3”单元格中,需根据实际进行修改。如果要将保存的时间放到页眉或页脚中,可以改为类似下面的代码,下例中将工作簿的保存日期和时间放到页脚右侧:Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)ActiveSheet.PageSetup.RightFooter = "修改时间:" & Format(Now, "yyyy年m月d日 hh:mm:ss")End Sub3.关闭VBA编辑器,回到Excel界面中。以后每次单击工具栏中的“保存”按钮,G3单元格或页眉页脚中就会显示当前保存的日期和时间。

125 次浏览
利用VBA创建新的工作簿
利用VBA创建新的工作簿

如果要用VBA创建新的工作簿,可以使用Add方法,如下面的代码。Excel自动将该工作簿命名为“BookN”,其中“N”是下一个可用的数字,同时新工作簿将成为活动工作簿。Sub AddOne()Workbooks.AddEnd Sub另外,创建新工作簿更好的方法是将其分配给一个对象变量。例如下例中,由Add方法返回的Workbook对象分配给了对象变量“NewBook”。然后,又设置了“NewBook ”的若干属性。Sub AddNew()Set NewBook = Workbooks.AddWith NewBook.Title = "图书销售目录一览表".Subject = "图书销售"End WithEnd Sub“Title”和“Subject”分别为工作簿的“标题”和“主题”属性,可以在工作簿属性的“摘要”选项卡中查看。下面的代码不仅创建了一个新工作簿的同时,还在工作簿中的第一个工作表前插入了一个名为“计算机类”的工作表,并将该工作表中的B2单元格赋值为“销售数量”。Sub CreateNewWorkBook()Dim WBook As Workbook, WSheet As WorksheetSet WBook = Workbooks.AddSet WSheet = WBook.Worksheets.AddWSheet.Name = "计算机类"WSheet.Range("B2").Value = "销售数量"End Sub

120 次浏览
excel实现按指定的单元格颜色进行计数或求和实例教程
excel实现按指定的单元格颜色进行计数或求和实例教程

如果Excel工作表的某区域中包含不同的底纹颜色,我们可以用一个自定义函数对该区域按指定的单元格颜色进行计数或求和。方法是:1.按Alt+F11,打开VBA编辑器。2.单击菜单“插入→模块”,将插入名称为“模块1”的模块,在右侧的代码窗口中输入下列代码:Function SumByColor(Ref_color As Range, Sum_range As Range)Application.VolatileDim iCol As IntegerDim rCell As RangeiCol = Ref_color.Interior.ColorIndexFor Each rCell In Sum_rangeIf iCol = rCell.Interior.ColorIndex ThenSumByColor = SumByColor + rCell.ValueEnd IfNext rCellEnd FunctionFunction CountByColor(Ref_color As Range, CountRange As Range)Application.VolatileDim iCol As IntegerDim rCell As RangeiCol = Ref_color.Interior.ColorIndexFor Each rCell In CountRangeIf iCol = rCell.Interior.ColorIndex ThenCountByColor = CountByColor + 1End IfNext rCellEnd Function上述两个自定义函数,一个是SumByColor,可以对区域按指定单元格的颜色求和。另一个是CountByColor,可以统计区域中某种颜色的个数。这两个自定义函数都有两个参数,前一个参数指定包含某种颜色的单元格,后一个参数为求和或计数区域。3.关闭VBA编辑器。使用方法:假如要求和或计数的区域在A1:B10区域中。

138 次浏览
excel VBA同时选择多个工作表的方法
excel VBA同时选择多个工作表的方法

如果要用VBA同时选择多个工作表,可以利用数组或设置“Select”方法的参数为“False”来扩展所选择的内容,如下面的一些代码:1.用工作表名称:假如工作表名称为“Sheet1”、“Sheet2”、“Sheet3”,同时选择这3个工作表:Sub SelectMultiSheets()Sheets(Array("Sheet3", "Sheet2", "Sheet1")).SelectEnd Sub2.用工作表索引号:索引号是分配给工作表的连续数字,同一类型的工作表在工作簿中按照从左到右的顺序,依次为1、2、3……。下面的代码同时选择第1个和第3个工作表:Sub SelectMultiSheets1()Worksheets(Array(3, 1)).SelectEnd Sub3.选择所有工作表:如果工作簿中不包含图表工作表、对话框工作表,下面的代码可以同时选择所有的工作表:Sub SelectAllSheets()Dim ws As WorksheetFor Each ws In ActiveWorkbook.Sheetsws.Select FalseNext wsEnd Sub

137 次浏览
利用VBA禁用Excel中的F1键
利用VBA禁用Excel中的F1键

如果在使用Excel过程中习惯使用F2键切换到单元格编辑状态,有时可能会不小心错按了F1键而弹出Excel帮助窗口,特别是对于键盘较小的笔记本这种情况就更容易出现。如果是Excel 2007/2010,Excel帮助窗口会覆盖工作表窗口,显得有些不便。如果要禁用F1键,可以用下面的VBA代码。在Excel中按快捷键Alt+F11,打开VBA编辑器,按Ctrl+G打开“立即”窗口,在其中输入下面的代码并按回车键:Application.OnKey "{F1}", ""这样就禁用了F1键的功能。重启Excel或用下面的代码即可恢复F1键正常功能:Application.OnKey "{F1}"但上述方法不能在每次启动Excel时都起作用。如果要每次启动Excel后都禁用F1键的功能,可以用多种方法来实现,本文以Excel 2007为例介绍两种方法:方法一:用加载宏对话框1.新建一个工作簿,打开VBA编辑器,在“工程”窗口中双击选择“ThisWorkbook”,在右侧的代码窗口中输入下列代码:Private Sub Workbook_Open()Application.OnKey "{F1}", ""End Sub2.单击“保存”按钮,将工作簿另存为“Excel 97-2003加载宏(*.xla)”格式,如名称为“禁用F1键.xla”。Excel会自动将该文件保存到“AddIns”文件夹中。

364 次浏览
excel自定义一个具有Like运算符功能的工作表函数
excel自定义一个具有Like运算符功能的工作表函数

我们知道VBA中的Like运算符是用来比较两个字符串的,其语法为:result = string Like pattern如果string与pattern匹配,则result为True,如果不匹配,则result为False。Like运算符的比较方式比较灵活,除了可以使用通配符外,pattern中还可以使用中括号“[ ]”。在中括号“[ ]”中,可以用由一个或多个字符组成的组与 string 中的任一字符进行匹配。虽然用COUNTIF工作表函数可以实现类似的比较功能,但COUNTIF函数不支持中括号。为此,我们可以创建一个自定义函数来实现类似Like运算符的功能,使用起来非常方便。方法如下:按Alt+F11,打开VBA编辑器,单击菜单“插入→模块”,将下列代码输入到代码窗口中:Public Function IsLike(sText As String, _sPattern As String) As BooleanIsLike = IIf(sText Like sPattern, True, False)End FunctionIsLike有2个字符串参数:sText和sPattern,sText类似于Like运算符的String, sPattern类似于Like运算符的pattern。其使用方法为:=islike(sText,sPattern)如果sText与sPattern匹配,则返回TRUE,否则FALSE。例如下面的公式:=islike("EXCEL技巧天地","E*")该公式检测“EXCEL技巧天地”字符串是否已字母“E”开头,结果返回TRUE。又如:

270 次浏览
excel打开工作簿时总是打开指定的工作表
excel打开工作簿时总是打开指定的工作表

通常在保存Excel工作簿时,如果某个工作表处于活动状态,下次打开这个工作簿时就会自动打开这个工作表。如果我们需要每次打开工作簿时总是打开指定的工作表,而无论保存时哪个工作表处于活动状态,可以用下面一个简单的VBA代码来实现:Private Sub Workbook_Open()Sheet3.ActivateEnd Sub按Alt+F11,打开VBA编辑器,在工程窗口中双击当前Excel文件名中的“ThisWorkBook”,在右侧的代码窗口中输入上述代码并保存,如图。 这样,每次打开工作簿时,Excel将自动打开“Sheet3”所对应的工作表,需要说明的是,这里的“Sheet3”不是工作表名称,而是工程窗口中的对象名称“Sheet3”,它对应的工作表名称是“汇总表”。当在Excel中更改工作表名称时,不会影响代码的运行,仍然会打开对象“Sheet3”对应的工作表。如果需要在代码中指定每次打开的工作表名称,可以用下面的代码:Private Sub Workbook_Open()Sheets("汇总表").SelectEnd Sub

149 次浏览
excel用自定义函数获取单元格注释
excel用自定义函数获取单元格注释

我们可以用一个自定义函数来提取单元格注释。方法如下:1.按Alt+F11,打开VBA编辑器。2.单击菜单“插入→模块”,在右边的代码窗口中输入代码:Function GetCommentText(rCommentCell As Range)Dim strGotIt As StringOn Error Resume NextstrGotIt = WorksheetFunction.Clean(rCommentCell.Comment.Text)GetCommentText = strGotItOn Error GoTo 0End Function3.关闭VBA编辑器。在单元格中输入公式:=GetCommentText(B4)将在当前单元格中返回B4单元格中的注释。

118 次浏览
excel批量提取超链接中的地址
excel批量提取超链接中的地址

如果Excel表格单元格中包含有许多用文本形式显示的超链接,如“给我发邮件”、“访问我的网站”等,要逐一查看所有超链接的地址,用手工的方法显得太繁琐,我们可以用自定义函数来批量提取这些超链接中的地址,将下列代码插入到标准模块中: Function GetURL(rng As Range) As StringOn Error Resume NextGetURL = rng.Hyperlinks(1).AddressEnd Function使用方法是在单元格中输入公式,假如单元格D6中含有超链接:=geturl(D6)还可以使用下面的代码将工作表中的所有超链接地址全部显示出来,运行代码前先备份工作簿,因为它会在含有超链接的单元格的右侧显示其地址,有可能会破坏工作表结构。Sub ExtractHL()Dim HL As HyperlinkFor Each HL In ActiveSheet.HyperlinksHL.Range.Offset(0, 1).Value = HL.AddressNextEnd Sub

203 次浏览
避免excel工作表函数在VBA中产生运行时错误
避免excel工作表函数在VBA中产生运行时错误

大家知道大多数的Excel工作表函数可以用在VBA中,通过下面的方法来调用,例如对A1:A10单元格求和:Sub Sum1()MsgBox WorksheetFunction.Sum(Sheet1.Range("A1:A10"))End Sub或:Sub Sum2()MsgBox Application.Sum(Sheet1.Range("A1:A10"))End Sub但是如果在单元格中包含错误,例如上例中的A1:A10区域包含一个“#DIV/0!”错误,运行上述代码后将产生运行时错误。例如出现类似下图的提示: 为避免出现这样的错误,我们可以将单元格中的错误用数值“0”取代。用下面的代码:Sub ReplaceErrors()On Error Resume NextWith Sheet1.Range("A1:A10").SpecialCells(xlCellTypeFormulas, xlErrors) = 0MsgBox WorksheetFunction.Sum(.Cells)End WithOn Error GoTo 0End Sub或者先进行一个错误检查,并给出提示:Sub CheckForErrors()Dim rErrCheck As RangeOn Error Resume NextWith Sheet1.Range("A1:A10")Set rErrCheck = .SpecialCells(xlCellTypeFormulas, xlErrors)If Not rErrCheck Is Nothing ThenMsgBox "指定的单元格中包含错误!"Application.Goto .SpecialCells(xlCellTypeFormulas, xlErrors)ElseMsgBox WorksheetFunction.Sum(.Cells)End IfEnd WithOn Error GoTo 0End Sub

126 次浏览
共计5788条记录 上一页 1.. 64 65 66 67 68 69 70 ..579 下一页