我是VBA的初学者,所以我希望这不是一个愚蠢的问题。我四处搜寻,找不到一种简单的方法来做我需要的事情。因此,我有一个数据表可提供其他12个工作表(每月1个),并且需要将工作表中所有公式中的单元格引用向下偏移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
当然,最困难的部分是注释过的部分-如果您所有的公式都只是上面给出的引用,那么这应该不难,只是有些乏味(您需要使用字符串从公式中提取行号和列号,操作)。您需要任何帮助吗?
更新:好的,您还可以简单地插入offset
Excel中可用的命令。这为您提供了更多选择:现在,我使用了“硬编码”行偏移量-作为参数传递的行偏移量。另外,您也可以使用单元格引用,在其中输入ror偏移量-如果需要更改,只需更新一个参数即可。假设包含偏移量的单元格为A1,则代码中的插入行变为
sFormula = "= offset( " + sFormula + ", A1, 0 )"
最后但并非最不重要的一点是,也没有什么可以阻止您也插入列偏移量,在这种情况下,您需要0
用您的内心需求替换偏移量公式的第三个参数(当前包含)。
在这一点上,我要指出的是,我现在不在任何Windows计算机上,因此我正在进行干式编码,但这应该还可以。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句