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")  字符连接的方式:用“”和 & 进行连接

(0)

相关推荐