如何更改作品中所有公式中的单元格引用 sheet
How to change cell reference in all formulas on a work sheet
我是 VBA 的初学者,所以我希望这不是一个愚蠢的问题。我四处搜索,找不到一种简单的方法来做我需要的事情。所以我有一个数据 sheet 提供 12 个其他工作 sheet(每个月 1 个),我需要将 sheet 上所有公式中的单元格引用向下偏移 13 行。例如:
我需要将公式从“=Data!C18”更改为“=Data!C31”
感谢您的帮助
第一次误解你的问题。您可以执行以下操作:
如果您的公式是您上面给出的简单参考,那么这种通用方法应该有效:
Sub shift_reference(rgRange As Excel.Range, iRowOffset As Integer)
Dim rgCell As Excel.Range
Dim sFormula$, iRow%
For Each rgCell In rgRange.Cells
' read formula from cell
sFormula = rgCell.FormulaR1C1
' cut off = sign from equation
sFormula = Right$( sFormula, Len( sFormula ) - 1 )
' insert offset command and reassemble
sFormula = "= offset( " + sFormula + ", " + CStr( iRowOffset ) + ", 0 )"
' set new formula for this cell
rgCell.FormulaR1C1 = sFormula
Next rgCell
End Sub
困难的部分当然是注释部分 - 如果您所有的公式都只是上面给出的参考,那么这应该不难,只是有点乏味(您需要从中提取行号和列号带有字符串操作的公式)。您需要任何帮助吗?
更新:
好的,您也可以简单地插入 Excel 中可用的 offset
命令。这为您提供了更多选择:现在,我使用了 "hard coded" 行偏移量 - 作为参数传递的那个。或者,您也可以使用单元格引用,在其中输入 ror 偏移量 - 如果它发生变化,您只需更新一个参数即可。比方说,包含偏移量的单元格是A1,那么代码中的插入行变为
sFormula = "= offset( " + sFormula + ", A1, 0 )"
最后但同样重要的是,没有什么能阻止您也插入 列 偏移量,在这种情况下,您需要替换偏移量公式的第三个参数(当前包含0
)随心所欲。
我现在要指出的是,我现在没有坐在任何 Windows 机器前,所以我正在干编码,但这应该没问题。
我是 VBA 的初学者,所以我希望这不是一个愚蠢的问题。我四处搜索,找不到一种简单的方法来做我需要的事情。所以我有一个数据 sheet 提供 12 个其他工作 sheet(每个月 1 个),我需要将 sheet 上所有公式中的单元格引用向下偏移 13 行。例如:
我需要将公式从“=Data!C18”更改为“=Data!C31”
感谢您的帮助
第一次误解你的问题。您可以执行以下操作:
如果您的公式是您上面给出的简单参考,那么这种通用方法应该有效:
Sub shift_reference(rgRange As Excel.Range, iRowOffset As Integer)
Dim rgCell As Excel.Range
Dim sFormula$, iRow%
For Each rgCell In rgRange.Cells
' read formula from cell
sFormula = rgCell.FormulaR1C1
' cut off = sign from equation
sFormula = Right$( sFormula, Len( sFormula ) - 1 )
' insert offset command and reassemble
sFormula = "= offset( " + sFormula + ", " + CStr( iRowOffset ) + ", 0 )"
' set new formula for this cell
rgCell.FormulaR1C1 = sFormula
Next rgCell
End Sub
困难的部分当然是注释部分 - 如果您所有的公式都只是上面给出的参考,那么这应该不难,只是有点乏味(您需要从中提取行号和列号带有字符串操作的公式)。您需要任何帮助吗?
更新:
好的,您也可以简单地插入 Excel 中可用的 offset
命令。这为您提供了更多选择:现在,我使用了 "hard coded" 行偏移量 - 作为参数传递的那个。或者,您也可以使用单元格引用,在其中输入 ror 偏移量 - 如果它发生变化,您只需更新一个参数即可。比方说,包含偏移量的单元格是A1,那么代码中的插入行变为
sFormula = "= offset( " + sFormula + ", A1, 0 )"
最后但同样重要的是,没有什么能阻止您也插入 列 偏移量,在这种情况下,您需要替换偏移量公式的第三个参数(当前包含0
)随心所欲。
我现在要指出的是,我现在没有坐在任何 Windows 机器前,所以我正在干编码,但这应该没问题。