我正在尝试将公式列位置的某些部分移动(偏移)到不同的列位置,偏移量为指定的列数。公式单元格在工作表中会发生变化。我有数千个公式,它们的单元格位置都不同。所以我更喜欢某种 vba 宏解决方案。这是原始公式:
=IF(AND($A$9=1,GH10=GT12),0,IF(AND($A$9=2,GI10=GS13),0,IF(AND($A$9=3,GJ10=GR14),0,1)))
并希望将其更改为:
=IF(AND($A$9=1,GI10=GT12),0,IF(AND($A$9=2,GJ10=GS13),0,IF(AND($A$9=3,GK10=GR14),0,1)))
这是多了一列,但只有分子(GH10 -> GI10 和 GI10 -> GJ10 等)。并且具有相同的恒定行号。
我找到了此代码(如下),它允许我从下拉框中选择要移动的列数(只要我可以手动将其输入到代码中,就没有必要),但这也会改变公式的分母。(注意:我不能将 $ 添加到我不想更改的公式部分。公式必须保持动态)。
Sub Macro1()
Dim nbr As Long, cel As Range, cels As Range, sh As Worksheet
Set cels = Selection
nbr = CLng(InputBox("Enter offset:"))
Set sh = Worksheets.Add
For Each cel In cels
If cel.HasFormula Then
sh.Cells(cel.Row, cel.Column + nbr).FormulaR1C1 = cel.FormulaR1C1
cel.Formula = sh.Cells(cel.Row, cel.Column + nbr).Formula
End If
Next
Application.DisplayAlerts = False
sh.Delete
Application.DisplayAlerts = True
End Sub
这是一次针对一个单元格。如果有可用的 VBA 代码,它是否可以容纳选定的范围,而不是一次容纳单个单元格?