1 VBA在单元格中输入公式
在公式中一般会出现对单元格地址的引用,引用的方式有绝对引用(A1方式)和相对引用(R1C1)方式,同样的,在用VBA输入公式时,也会有两种方式。
1.1 输入A1格式的公式
向单元格输入公式,实际上就是输入公式的字符串。这时采用Range的value属性或Formula属性均可。
.Range("E11").Formula = "=sum(E2:E10)"
1.2 输入R1C1公式
使用R1C1格式向单元格输入公式,实际上是录制宏的方式。是一种地址相对引用的方式,这里的相对引用的基准地址就是公式所在的地址, 以此地址为基准,偏移行R和列C得到相对引用位置。有些人可能喜欢这种方式,不过这种方式不像A1方式那样直观和容易理解。
(如果不是很熟悉VBA的语法格式,可以采取录制宏的方式去得到代码;如果觉得R1C1格式不习惯,可以在在Excel中设置公式的引用方式为A1(在Excel选项的公式项中设置),输入公式后再复制到VBA代码中。)
.Range("G11").FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)";
[]中的数据代表单元格相对于当前单元格的行列偏移。
1.3 输入数组公式
向单元格或单元格区域输入数组公式,需要使用FormulaArray属性。
Range("E1:E11")FormulaArray = "=C2:C10*D2:D10"
2 使用函数
2.1 VBA引用Excel内置函数
.Range("A16") = "=find(""."",A13,1)"
.Range("A18") = Application.WorksheetFunction.Find(".", fname, 1)
(在VBE的代码窗口中输入Application.WorksheetFunction.可以得到引用Excel内置函数的提示;)
2.2 VBA引用VBA内置函数
.Range("A14") = InStr(ActiveWorkbook.Name, ".")
(在VBE的代码窗口中输入VBA.,可以得到内置函数的提示;)
2.3 自定义函数
函数过程的标志以Function开头,定义好以后,可以像调用Excel已定义的函数一样通过等于号去使用它。
Function 及格率(cell As Range)
及格率=WorksheetFunction.CountIf(cell, ">=60") / WorksheetFunction.CountIf(cell, ">0")
及格率=Format(及格率, "0.00%")
End Function
自定义函数可以必须有返回值,所以有函数体中必须至少被赋值一次,也因此在Function后跟数据类型定义;
Function过程通常三种方式调用:
(1)在工作表中通过公式调用:像内部函数一样在工作表中使用,也可以与其它函数嵌套。使用方法如下:
公式→插入函数→类别:用户定义→选择函数;
(2)在VBA代码中被其它过程调用。
(3)递归:Function过程和Sub一样可以实现递归。如果不是刻意地、有计划地进入递归状态,可以会造成资源耗尽或者溢出堆栈空间。例如下例函数的调用:
在VBA语言中,也有预定义一些函数,与Excel预定义的相同功能的函数有细微区别)。
3 综合实例
有如下工作表:
运行以下VBA:
Sub formulaTest()
With ActiveWorkbook.Sheets("使用公式和函数")
For i = 2 To 10
.Range("E" & i).Value = "=sum(A" & i & ":D" & i & "2)"
.Range("E11").Formula = "=sum(E2:E10)"
.Range("G11").FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
.Range("G2:G10").FormulaArray = "=E2:E10*F2:F10"
.Range("A13") = ActiveWorkbook.Name
Dim fname As String
fname = Range("A13").Value
.Range("A14") = InStr(ActiveWorkbook.Name, ".")
.Range("A15") = InStr([A13], ".")
.Range("A16") = "=find(""."",A13,1)"
.Range("A17") = InStr(fname, ".")
.Range("A18") = Application.WorksheetFunction.Find(".", fname, 1)
.Range("A19") = Application.WorksheetFunction.Find(".", [A13], 1)
'[A13]相当于range("A13")
End With
'Instr([start,]string1,string2[,compare])
End Sub
效果如下:
对应的公式如下:
-End-
墨指含香百家号01-2311:381 VBA在单元格中输入公式在公式中一般会出现对单元格地址的引用,引用的方式有绝对引用(A1方式)和相对引用(R1C1)方式,同样的,在用VBA输入公式时,也会有两种方式。1.1 输入A1格式的公式向单元格输入公式,实际上就是输入公式的字符串。这时采用Range的value属性或Formula属性均可。.Range("E11").Formula = "=sum(E...
在
VBA
编程中,时常要利用Excel自带的多种功能强大的
函数
。那么,如何在
VBA
中向单元格中
输入
公式
呢?看到别人的培训资料里已有所总结,这里借花献佛一下。代码:Option Explicit
'一、在单元格中
输入
公式
'1、用
VBA
在单元格中
输入
普通
公式
Sub t1()
Range("d2") = "=b2*c2"
End Sub
EXCEL的表
函数
也可以直接在
VBA
中直接调用执行,具体调用格式如下:
调用方法1:变量对象= Application.WorksheetFunction.表
函数
(表
函数
参数)
实例:Range("d8") = Application.WorksheetFunction.CountIf(Range("A1:A10"), "B")...
Application.WorksheetFunction.CountA
Application.WorksheetFunction.CountIf
Application.WorksheetFunction.VLookup
On Error Resume Next 如果出现错误,执行下一行
Sub 统计人数()
Dim i, k, n, m A...
报错信息:Cannot interpret feed_dict key as Tensor: Tensor Tensor("keras_learning_phase:0", shape=(), dtype=bool) is not an element of this graph.
场景:在django中调用YOLOv3模型中的detect_image
函数
报错
解决办法:将detect_image
函数
中sess.run中K.learning_phase(): 0注释掉
原理:暂时不知道
文章目录
VBA
的
函数
excel
函数
对应的
vba
函数
countavlookupexcel特有
函数
和
vba
特有
函数
vba
字符串
函数
instrsplit
vba
常用
函数
错误处理控制
输入
的格式自己写
函数
带参数的sub代码复用
没完成的任务:张三李四登录p=8
VBA
的
函数
熟悉的
函数
可以用,有哪些新的
函数
excel
函数
对应的
vba
函数
counta
函数
计算范围中不为空的单元格的个数。
=counta(a1:a10)
' 指定某个工作表的某个区域
=counta(重庆!A:A)-1
vba
中
使用
普通方
2. 在
公式
中调用
函数
你还可以在 Excel 的单元格
公式
中调用自定义
函数
。例如,假设你想在单元格 A1 中调用 MyFunction
函数
,你可以在 A1 中
输入
以下
公式
:
=MyFunction()
注意,在
公式
中调用
函数
时,不需要加括号。
无论是在代码中还是在
公式
中调用
函数
,都要确保
函数
已经在
VBA
模块中定义。例如,下面是一个简单的无参自定义
函数
的示例:
Function MyFunction() As String
MyFunction = "Hello, World!"
End Function