VBA代码完全控制函数公式 批量写入和修改
本技巧的目的:
如何使用VBA 在单元格区域写入公式
如何使用VBA 检查单元格区域是否有公式
如何使用VBA 判断单元格的公式是否存在错误
如何使用VBA 使用工作表函数计算
下图是测试单元格是否有公式 :
如果有混合的区域,可以检测出含有公式的区域:
代码助手
代码助手下载地址 http://excel880.com/blog/archives/11297
在代码窗口输入中文:公式+空格,可以快速输入代码
在代码库中可以随时收录需要的代码
1. 在单元格中写入公式
运行代码前:
运行代码后:
注释:
写入的公式可以是绝对引用,也可以是非绝对引用。
绝对引用:
s = r.Address '地址后面不带参数
Range("c2").Formula = "=sum($A$1:" & s & ")"
★★★注意:公式中的双引号,= 等字符 不能遗漏。 = "=sum($A$1:" & s & ")"
还可以使用FormulaR1C1属性返回或设置以R1C1-样式符号表示的公式,如下面的代码所示。
Sub rngFormulaRC()
Sheet2.Range("C1:C10").FormulaR1C1 = "=SUM(RC[-2]+RC[-1])"
End Sub
如果需要在单元格中写入数组公式则使用Range对象的FormulaArray属性。如下面的代码所示。
Sub RngFormulaArray()
Sheet3.Range("C1").FormulaArray = "=A1:A2*B1:B2"
End Sub
Range对象的FormulaArray属性返回或设置单元格区域的数组公式。
2. 检查单元格是否含有公式
代码如下:
注释:
HasFormula 属性:
区域中 所有单元格 均包含公式, 值为 True
区域中 所有单元格 均不包含公式,值为 False
其他情况下:单元格中既有包含公式 也有不包含公式的,值为:Null
其他情况代码:
MsgBox "公式区域:" & Selection.SpecialCells(xlCellTypeFormulas).Address(0, 0)
'提示对话框: 包含公式的单元格的非绝对引用地址
使用 SpecialCells 方法,返回一个与指定类型及值相匹配的所有单元格
返回是 Range 对象, 加上 address(0,0),显示 非绝对引用的地址
3. 判断单元格公式是否存在错误
代码:
运行结果:
检查没有错误公式的单元格:
只需要更换地址:Set rng = Sheet1.Range("D7")
运行结果:
注释:
通过 IsError 来检查是否包含单元格错误值,返回不同的结果
4. 使用工作表函数计算
代码:
注释:
Application.WorksheetFunction.Sum 调用工作表函数进行运算
Sheet1.Range("D2:" & 列 & "9") 字符连接的方式:用“”和 & 进行连接