Вычесть из ссылки на ячейку

Мне просто нужен способ удалить два из ссылки на ячейку (т. е. изменить = 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

Но это только сработало; все, что нужно было сделать, это скопировать одну и ту же формулу в каждую дополнительную ячейку.

«Но это только казалось, что работает»… не оставляйте нас в напряжении.

SJR 14.12.2020 14:24

Код вроде работает. Если я помещу формулы в A1–A14, код заменит A12 и A13. Он заменяет последний символ в формулах на символ 4. Разве это не то, что вы хотите??

Gary's Student 14.12.2020 14:25

Примечание: замена символа на 4 — это не то же самое, что вычитание 2 из числа.

Gary's Student 14.12.2020 14:30

Я просто хочу взять ссылку в ячейке и сделать ее на две меньше. Ссылка будет меняться каждый раз, когда это необходимо, так что это не соответствует моей цели.

Hebert 14.12.2020 14:31
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
4
152
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте это вместо этого:

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 14.12.2020 14:53

@Hebert Я добавил ПРИМЕЧАНИЯ

Gary's Student 14.12.2020 14:59

Другие вопросы по теме