Страницы: 1
RSS
Изменение формулы для выделенного диапазона
 
Здравствуйте!
Возникла необходимость заменить в готовом файле формулы типа ССЫЛКА на ДВССЫЛ("ССЫЛКА").
Как можно это быстро сделать?
Спасибо.
 
не понятное желание что изменится от этого
Лень двигатель прогресса, доказано!!!
 
При вставке и удалении строк на первом листе не должны меняться адреса ссылок.
 
Hamlook, ч/з Ctrl+H, но в целом, не ясно, ради чего это..
 
AlexTM, продемонстрируйте как это сделать "ч/з Ctrl+H". (я не додумался)

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, дня доброго!
Мой подход всегда един в этих случаях.. (был до настоящего момента)
Имею: =май!A5
Хочу: =июнь!А5
Ctrl+H: май-->июнь =июнь!А5
Как-то так..
 
AlexTM, здравия желаю. А можете привести пример как найти и заменить для данного случая?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
AlexTM написал:
Мой подход всегда един в этих случаях
В данном конкретном случае единый подход не подойдет. Допустим, получится подставить вместо равно =ДВССЫЛ(". Но как подставлять для всех ячеек кавычки и скобку в конце Вашим методом? Тоже хотел бы увидеть...

Я могу только на базе своего кода из статьи Как в ячейке с формулой вместо ошибки показать 0 предложить такой код:
Код
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")
Вставил чз замену в два этапа вместо "=" вот это: =ДВССЫЛ("
Ну а хвостик не вставился.  :sceptic: Хм.
Или мы о разном ведем речь?
upd: да, мой метод "прокатит" только для статичных ссылок с единичкой на конце, т.к. я могу ее как раз дополнить хвостиком через замену. для других ссылок не пойдет.
Изменено: AlexTM - 25.03.2016 10:36:17
 
AlexTM, для каждой формулы делать свой вариант найти и заменить не имеет смысла. Тогда можно руками править в каждой яч. А ТС нужно одним махом ссылки запихнуть в ДВССЫЛ().
Тут либо макросом, либо с использованием функций и макрофункций, но первый вариант более простой.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Пока Вы тут рассуждали я уже все сделал  :D
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Спасибо большое, все отлично работает.
Страницы: 1
Наверх