当变量与字符串连接时候,一定在中间加连接符号&,否则会提示错误。
如"=b2*c2" ,在x=2 to 6时候,cells(x,4)="=b"&x&"*c"&x (实际运行时提示错误)
我自己写的公式,经检验完全可用。
Sub bas1()
Dim x As Range
For Each x In Range("d2:d6")
x = x.Offset(0, -1) * x.Offset(0, -2)
Next x
End Sub
用VBA在单元格输入带引号的公式,遇到单引号就把单引号加倍。
sub t3()
range ("c9")="=SUMIF(A2:A6,""b"",b2:b6)"
end sub
利用VBA在单元格中输入数组公式
sub t4()
range("c9").formulaArray= "=sum(B2:B6*C2:C6)"
end sub
利用单元格公式返回值
sub t5()
range("d13")=Evaluate("=SUMIF(A2:A6,""B"",B2:B6)")
range("d9")=Evaluate("=SUM(B2:B6*C2:C6)")
End sub
Evaluate 还可以返回数组公式的值
我自己仿写的,心得,若是利用单元格公式直接返回值,其实就是在引用单元格公式的基础上,在单元格公式外穿一层衣服,Evaluate(),就可以了。
Sub bas3()
Range("d9") = Evaluate("=sum(d2:d6)")
End Sub
借用工作表函数
sub t6()
range("d8")=Application. WorksheeFunction.Sum(Range("d2:d6"))
end sub
调用函数的参数设置问题,Sum(Range("d2:d6"))是VBA表示方法。
countif(range("a1:a10"),"b"),调用工作表函数,一定要用VBA表示方法。
利用VBA函数
sub t7()
range("c20")=VBA.Instr(range("a20"),"E")
end sub
想知道有哪些VBA的函数,输入VBA.系统就会弹出。关于这一步,要注意,如果忘记写range在instr函数中,并不会报错,但是结果会返回0,实际上结果是3.
编写自定义函数(后续填坑)