Я пытаюсь переместить (сместить) только части расположения столбца формулы в другое расположение столбца на указанное количество столбцов. Ячейки формулы меняются от листа к листу. У меня есть тысячи формул, которые имеют разные ячейки. Поэтому я предпочитаю какое-то решение для макросов 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, может ли он соответствовать выбранному диапазону в отличие от одной ячейки одновременно?