Мне просто нужен способ удалить два из ссылки на ячейку (т. е. изменить = Y36 на = Y34). Это нужно сделать для двух ячеек непосредственно перед концом столбца, и самое близкое, что я подошел к нему, это
Sub Update_Reference()
Dim myCell As Range
Range("A" & Rows.Count).End(xlUp).Offset(-2).Resize(2).Select
For Each myCell In Selection
If myCell.HasFormula Then myCell.Formula = Left(myCell.Formula, _
Len(myCell.Formula) - 1) & 4
Next myCell
End Sub
Но это только сработало; все, что нужно было сделать, это скопировать одну и ту же формулу в каждую дополнительную ячейку.
Код вроде работает. Если я помещу формулы в A1–A14, код заменит A12 и A13. Он заменяет последний символ в формулах на символ 4. Разве это не то, что вы хотите??
Примечание: замена символа на 4 — это не то же самое, что вычитание 2 из числа.
Я просто хочу взять ссылку в ячейке и сделать ее на две меньше. Ссылка будет меняться каждый раз, когда это необходимо, так что это не соответствует моей цели.
Попробуйте это вместо этого:
Sub Update_Reference()
Dim myCell As Range, s As String, i As Long, N As Long
Dim FirstPart As String
Range("A" & Rows.Count).End(xlUp).Offset(-2).Resize(2).Select
For Each myCell In Selection
If myCell.HasFormula Then
s = myCell.Formula
For i = Len(s) To 1 Step -1
If IsNumeric(Mid(s, i, 1)) Then
'
Else
Exit For
End If
Next i
FirstPart = Mid(s, 1, i)
N = Mid(s, i + 1) - 2
myCell.Formula = FirstPart & N
End If
Next myCell
End Sub
ПРИМЕЧАНИЯ:
Код разбивает формулу на 2 части; числовая часть в конце формулы (N) и все остальное (FirstPart). Он вычитает 2 из числовой части и снова складывает формулу.
Глядя на эту формулу, видно, насколько выше моих знаний о VBA. Спасибо за вашу помощь; это работает
@Hebert Я добавил ПРИМЕЧАНИЯ
«Но это только казалось, что работает»… не оставляйте нас в напряжении.