JayBhagavan, дня доброго! Мой подход всегда един в этих случаях.. (был до настоящего момента) Имею: =май!A5 Хочу: =июнь!А5 Ctrl+H: май-->июнь =июнь!А5 Как-то так..
AlexTM написал: Мой подход всегда един в этих случаях
В данном конкретном случае единый подход не подойдет. Допустим, получится подставить вместо равно =ДВССЫЛ(". Но как подставлять для всех ячеек кавычки и скобку в конце Вашим методом? Тоже хотел бы увидеть...
Sub IndirectForAll()
Dim rr As Range, rc As Range
Dim s As String, ss As String
On Error Resume Next
Set rr = Intersect(Selection, ActiveSheet.UsedRange)
If rr Is Nothing Then
MsgBox "Выделенный диапазон не содержит данных", vbInformation, "www.excel-vba.ru"
Exit Sub
End If
For Each rc In rr
If rc.HasFormula Then
s = rc.Formula
s = Mid(s, 2)
ss = "=" & "INDIRECT(""" & s & """)"
If Left(s, 9) <> "INDIRECT(" And Right(s, 1) <> ")" Then
rc.NumberFormat = ""
rc.Formula = ss
If Err.Number Then
ss = rc.Address
rc.Select
Exit For
End If
End If
End If
Next rc
If Err.Number Then
MsgBox "Невозможно преобразовать формулу в ячейке: " & ss & vbNewLine & _
Err.Description, vbInformation, "www.excel-vba.ru"
Else
MsgBox "Формулы обработаны", vbInformation, "www.excel-vba.ru"
End If
End Sub
Внимание, выделять лучше ячейки(можно через CTRL), для которых ДВССЫЛ подставить надо. По умолчанию код подставить ДВССЫЛ для тех ячеек, на конце у которых нет закрывающей скобки и которые не начинаются на ДВССЫЛ. Для всех других ячеек код подставит ДВССЫЛ, что может повлечь ошибку вычислений(для той же ВПР, например, если будет что-то вроде: =ВПР(А1;B1:F10;2;0)*B1).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
JayBhagavan, =ДВССЫЛ("Текущий_месяц!$C$1") Вставил чз замену в два этапа вместо "=" вот это: =ДВССЫЛ(" Ну а хвостик не вставился. Хм. Или мы о разном ведем речь? upd: да, мой метод "прокатит" только для статичных ссылок с единичкой на конце, т.к. я могу ее как раз дополнить хвостиком через замену. для других ссылок не пойдет.
AlexTM, для каждой формулы делать свой вариант найти и заменить не имеет смысла. Тогда можно руками править в каждой яч. А ТС нужно одним махом ссылки запихнуть в ДВССЫЛ(). Тут либо макросом, либо с использованием функций и макрофункций, но первый вариант более простой.
Формула массива (ФМ) вводится Ctrl+Shift+Enter Memento mori