Макросы в excel замена в формулах

Когда удобно менять формулы на значения нажатием горячих клавиш?

Порой бывают ситуации, когда вычисления в отчете  выполняются на основании данных полученных из временной промежуточной таблицы. Эту таблицу нужно исключить из отчета, но при ее удалении полученные значения в отчете изменяются, так как «привязаны» к промежуточной таблице  (черновику) формулами.

Для того, чтобы «отвязать» результаты расчетов от исходных данных следует заменить формулы в ячейках на их значения (цифры).

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

Это не всегда удобно. Например, если вы используете фильтры, значения вставятся не в нужные ячейки, а в ячейки под фильтрами. Кроме того, такая процедура не быстрая – несколько кликов и  при замене нескольких тысяч строчек руки будут сильно уставать набора однообразных действий.

Естественно, любому пользователю хочется выполнять замену формул на значения в один клик, а лучше даже сочетанием горячих клавиш.

Как реализовать замену формул на значения (числа) в выделенных ячейках при помощи горячих клавиш с назначенным макросом рассмотрим ниже.

    Для начала следует записать макрос замены.

    1. В панели разработчика создаем модуль (контейнер) для макроса:
    • Кликаем на пиктограмму Visual BasicСоздать макрос
    • В открывшемся окне кликаем правой кнопкой мыши по книге и выбираем в контекстном меню insert => Module

    Вставить модуль

    1. Открываем созданный модуль двойным щелчком мыши и записываем в него текст макроса.

    Sub Замена_формул()

        For Each cell In Selection

            cell.Formula = cell.Value

        Next

    End Sub

    где

    Sub Замена_формул() – название макроса;

    For Each cell In Selection – цикл повторяющихся действий от первой ячейки  до конца выделения;

    cell.Formula = cell.Value – действие по замене формулы на значение;

    End Sub – конец макроса.

    1. После записи макроса следует зайти в панели разработчика в список макросов и кликнув по кнопке параметры назначить макросу сочетание клавиш.

    Выбрать макросназначить макросу клавиши

    Теперь если выделить диапазон с формулами и нажать заданное сочетание клавиш значения выделенных  ячеек будут  заменены на числа.

    После замены формул на значения  можно смело удалять промежуточные таблицы (черновики) из отчета .

    Видео работы макроса замены формул на значения:

    В данной статье представлены разные варианты макросов для быстрой замены формул на значения в документах MS Excel

    Заменить формулу на значение можно следующим образом: выделяем нужную ячейку, нажимаем F2, F9, Enter и в текущей ячейке формула заменится на значение. Если таких ячеек много, то это превратится в долгий и рутинный процесс. На помощь придут следующие макросы

    Макрос для превращения всех формул в значения в выделенном диапазоне (или нескольких диапазонах, выделенных одновременно с Ctrl):

    Sub Formulas_To_Values_Selection()
     'преобразование формул в значения в выделенном диапазоне    
    Dim smallrng As Range
         For Each smallrng In Selection.Areas
             smallrng.Value = smallrng.Value
         Next smallrng
     End Sub

    Макрос для превращения всех формул в значения на текущем листе:

    Sub Formulas_To_Values_Sheet()
    'преобразование формул в значения на текущем листе
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
    End Sub

    Макрос для превращения всех формул в книге и на всех листах:

    Sub Formulas_To_Values_Book()
    'преобразование формул в значения во всей книге
    For Each ws In ActiveWorkbook.Worksheets
    ws.UsedRange.Value = ws.UsedRange.Value
    Next ws
    End Sub

    Данный макрос меняет все формулы на значения во всех файлах на всех листах в указанной папке

    Sub УдалитьВсеФормулыВПапке()   
     Dim fd As FileDialog   
     Dim iPath As String   
     Dim iFileName As String   
     Dim iSheet As Worksheet   
     Set fd = Application.FileDialog(msoFileDialogFolderPicker)   
        ChDir "C:"   
        With fd   
            .ButtonName = "Выбрать"   
            If .Show = -1 Then   
                iPath = .SelectedItems(1) & Application.PathSeparator   
            Else   
                Exit Sub   
            End If   
        End With   
        Set fd = Nothing    
    if MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены ???", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub   
    If MsgBox("Вы отдаёте себе отчёт, что формулы во всех файлах будут удалены?", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub    
    If MsgBox("Во всех документах Excel в папке " & iPath & " на всех листах формулы будут заменены на значения!" & Chr(13) & "Вы уверены ???", vbOKCancel + vbExclamation, "Подтверждение") = vbCancel Then Exit Sub   
      With Application   
           .ScreenUpdating = False   
           .Calculation = xlCalculationManual   
           '.EnableEvents = False   
           iFileName = Dir(iPath & "*.xls")   
           Do While iFileName$ <> ""   
               With Workbooks.Open(Filename:=iPath & iFileName, UpdateLinks:=0)   
                   For Each iSheet In .Sheets   
                       With iSheet.UsedRange   
                           .Value = .Value   
                       End With   
                   Next   
               .Close saveChanges:=True   
               End With   
               iFileName$ = Dir   
           Loop   
           .EnableEvents = True   
           .Calculation = xlCalculationAutomatic   
           .ScreenUpdating = True   
       End With   
           MsgBox "Во всех документах Excel в папке " & iPath & " на всех листах формулы были заменены на значения!", 64, "Конец"   
    End Sub 

    Код нужных макросов можно скопировать в новый модуль вашего файла. Нажимаем Alt+F11 чтобы попасть в Visual Basic, далее Insert – Module чтобы попасть в Visual Basic, далее Insert – Module. Запускать их потом можно через вкладку Разработчик – Макросы (Developer – Macros) или сочетанием клавиш Alt+F8. Макросы будут работать в любой книге, пока открыт файл, где они хранятся.

    Внимание! Действия выполненные макросом невозможно отменить – применяйте их с осторожностью.

    Содержание

    1. Макрос для быстрой замены формул на значения (числа) в выделенных ячейках документа Excel.
    2. Как реализовать замену формул на значения (числа) в выделенных ячейках при помощи горячих клавиш с назначенным макросом рассмотрим ниже.
    3. Теперь если выделить диапазон с формулами и нажать заданное сочетание клавиш значения выделенных ячеек будут заменены на числа.
    4. Видео работы макроса замены формул на значения:
    5. Добавить комментарий Отменить ответ
    6. Как быстро заменить формулы на значения в таблице Excel
    7. Первый метод: стандартная замена формул на значения
    8. Второй метод: использование горячих клавиш табличного редактора
    9. Третий метод: замена при помощи мышки
    10. Четвертый метод: применение специальной кнопки для вставки значений
    11. Пятый метод: использование специальных макросов
    12. Заключение и выводы о быстрой замене формул на значения в табличном документе
    13. Преобразование формул в значения
    14. Способ 1. Классический
    15. Способ 2. Только клавишами без мыши
    16. Способ 3. Только мышью без клавиш или Ловкость Рук
    17. Способ 4. Кнопка для вставки значений на Панели быстрого доступа
    18. Способ 5. Макросы для выделенного диапазона, целого листа или всей книги сразу
    19. Способ 6. Для ленивых

    Макрос для быстрой замены формул на значения (числа) в выделенных ячейках документа Excel.

    Порой бывают ситуации, когда вычисления в отчете выполняются на основании данных полученных из временной промежуточной таблицы. Эту таблицу нужно исключить из отчета, но при ее удалении полученные значения в отчете изменяются, так как «привязаны» к промежуточной таблице (черновику) формулами.

    Для того, чтобы «отвязать» результаты расчетов от исходных данных следует заменить формулы в ячейках на их значения (цифры).

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

    Это не всегда удобно. Например, если вы используете фильтры, значения вставятся не в нужные ячейки, а в ячейки под фильтрами. Кроме того, такая процедура не быстрая – несколько кликов и при замене нескольких тысяч строчек руки будут сильно уставать набора однообразных действий.

    Естественно, любому пользователю хочется выполнять замену формул на значения в один клик, а лучше даже сочетанием горячих клавиш.

    Для начала следует записать макрос замены.

    1. В панели разработчика создаем модуль (контейнер) для макроса:
    • Кликаем на пиктограмму Visual Basic
    • В открывшемся окне кликаем правой кнопкой мыши по книге и выбираем в контекстном меню insert => Module

    1. Открываем созданный модуль двойным щелчком мыши и записываем в него текст макроса.

    Sub Замена_формул()

    For Each cell In Selection

    cell.Formula = cell.Value

    Next

    End Sub

    Sub Замена_формул() – название макроса;

    For Each cell In Selection – цикл повторяющихся действий от первой ячейки до конца выделения;

    cell.Formula = cell.Value – действие по замене формулы на значение;

    End Sub – конец макроса.

    1. После записи макроса следует зайти в панели разработчика в список макросов и кликнув по кнопке параметры назначить макросу сочетание клавиш.

    Теперь если выделить диапазон с формулами и нажать заданное сочетание клавиш значения выделенных ячеек будут заменены на числа.

    После замены формул на значения можно смело удалять промежуточные таблицы (черновики) из отчета .

    Видео работы макроса замены формул на значения:

    Добавить комментарий Отменить ответ

    Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

    Источник

    Как быстро заменить формулы на значения в таблице Excel

    Часто перед пользователями табличного редактора Эксель встает задача, когда необходимо реализовать замену формул на значения. Осуществить это процедуру можно различными способами. В статье мы разберем множество методов, позволяющих заменить формулу на значения в табличном документе.

    Первый метод: стандартная замена формул на значения

    Это самый известный и распространенный способ, позволяющий заменить формулы на значения. Подробная инструкция выглядит так:

    1. Первоначально производим выделение того диапазона данных, в котором мы желаем реализовать замену формул на значения.
    2. Реализуем копирование данных. Для этого нажимаем правой клавишей мышки по выбранному диапазону и в контекстном меню кликаем на элемент «Копировать». Альтернативный вариант – использование комбинации клавиш «Ctrl+C».
    3. Кликаем ПКМ по выбранному диапазону. Здесь можно выбрать иконку под названием «Значения».

    1. Следует навести мышку на элемент «Специальная вставка», чтобы раскрыть перечень функций.

    1. Здесь располагаются все возможные вариации вставки значений с сохранностью форматирования исходных ячеек.

    Стоит отметить, что в ранних версиях табличного редактора отсутствуют такие дополнительные значки, поэтому все операции производятся через такое окно:

    Второй метод: использование горячих клавиш табличного редактора

    Все вышеприведенные манипуляции можно реализовать при помощи специальных горячих клавиш табличного редактора. Подробная инструкция выглядит так:

    1. Реализуем копирование нужного диапазона при помощи комбинации клавиш «Ctrl+C».
    2. Сюда же осуществляем обратную вставку при помощи комбинации клавиш «Ctrl+V».
    3. Щелкаем на «Ctrl», чтобы отобразить небольшое меню, в котором будут предложены вариации вставки.
    4. Щёлкаем на «З» на русской раскладке или же используем стрелочки для выбора параметра «Значения». Осуществляем подтверждение всех проделанных действий при помощи клавиши «Enter», расположенной на клавиатуре.

    Третий метод: замена при помощи мышки

    Этот метод позволяет осуществить процедуру замены формул на значения намного быстрее вышеприведенных методов. Здесь используется только компьютерная мышка. Подробная инструкция выглядит так:

    1. Производим выделение ячеек с формулами на рабочем листе табличного документа.
    2. Беремся за рамку выделенного фрагмента и, зажав ПКМ, осуществляем перетаскивание на два см в какую-либо сторону, а затем реализуем возврат на начальную позицию.
    3. После осуществления этой процедуры отобразилось небольшое специальное контекстное меню, в котором необходимо выбрать элемент, имеющий наименование «Копировать только значения».

    Четвертый метод: применение специальной кнопки для вставки значений

    Значительно ускорить процедуру специальной вставки можно при помощи добавления специальной кнопки «Вставить как значения» на панель быстрого доступа. Подробная инструкция по добавлению и использованию выглядит так:

    1. Передвигаемся в подраздел «Файл».
    2. Выбираем элемент, имеющий наименование «Параметры».
    3. Щёлкаем левой клавишей мышки на «Панель быстрого доступа».
    4. На экране отобразилось окошко, в котором можно добавить разнообразные элементы на панель быстрого доступа. Раскрываем перечень под названием «Все команды».
    5. В раскрывшемся перечне находим элемент под названием «Вставить значения» и добавляем его на панель быстрого доступа при помощи кнопки «Добавить».
    6. Готово! Мы добавили эту кнопку на панель быстрого доступа.
    7. Теперь остается только скопировать диапазон ячеек, в котором располагаются необходимые нам формулы, а затем нажать на только что добавленную кнопку на панели быстрого доступа.

    Стоит заметить, что стандартно всем кнопку на панели быстрого доступа задается комбинация клавиш «Alt+цифра». После клика на «Alt» на верхней панели покажется цифра, обозначающая эту кнопку.

    Пятый метод: использование специальных макросов

    Использование макросов – самый быстрый способ, позволяющий заменить формулы на значения. Так выглядит макрос, позволяющий заменить все формулы на значения в выбранном диапазоне:

    Так выглядит макрос, позволяющий заменить все формулы на значения на выбранном рабочем листике табличного документа:

    Так выглядит макрос, позволяющий заменить все формулы на значения на всех рабочих листиках табличного документа:

    Подробная инструкция по использованию макросов выглядит так:

    1. При помощи комбинации клавиш «Alt+F11» открываем редактор VBA.
    2. Открываем подраздел «Insert», а затем жмем левой клавишей мышки по элементу «Module».
    3. Сюда мы вставляем один из вышеприведенных кодов.
    4. Запуск пользовательских макросов осуществляется через подраздел «Макросы», располагающийся в разделе «Разработчик». Альтернативный вариант – использование комбинации клавиш «Alt+F8» на клавиатуре.
    5. Макросы работают в любом табличном документе.

    Стоит помнить, что манипуляции, реализованные при помощи макроса, нельзя отменить.

    Заключение и выводы о быстрой замене формул на значения в табличном документе

    Мы выяснили, что существует множество вариантов, позволяющих реализовать замену формул на значения в табличном документе. Реализовать эту процедуру можно при помощи специальной вставки, комбинаций клавиш, компьютерной мышки, персональных макросов и специальной кнопки, добавляемой на панель быстрого доступа. Каждый метод имеет свои преимущества и недостатки. Пользователь может самостоятельно подобрать для себя наиболее удобный и быстрый метод, позволяющий реализовать замену формул на значения в табличном документе.

    Источник

    Преобразование формул в значения

    Формулы – это хорошо. Они автоматически пересчитываются при любом изменении исходных данных, превращая Excel из «калькулятора-переростка» в мощную автоматизированную систему обработки поступающих данных. Они позволяют выполнять сложные вычисления с хитрой логикой и структурой. Но иногда возникают ситуации, когда лучше бы вместо формул в ячейках остались значения. Например:

    • Вы хотите зафиксировать цифры в вашем отчете на текущую дату.
    • Вы не хотите, чтобы клиент увидел формулы, по которым вы рассчитывали для него стоимость проекта (а то поймет, что вы заложили 300% маржи на всякий случай).
    • Ваш файл содержит такое больше количество формул, что Excel начал жутко тормозить при любых, даже самых простых изменениях в нем, т.к. постоянно их пересчитывает (хотя, честности ради, надо сказать, что это можно решить временным отключением автоматических вычислений на вкладке Формулы – Параметры вычислений).
    • Вы хотите скопировать диапазон с данными из одного места в другое, но при копировании «сползут» все ссылки в формулах.

    В любой подобной ситуации можно легко удалить формулы, оставив в ячейках только их значения. Давайте рассмотрим несколько способов и ситуаций.

    Способ 1. Классический

    Этот способ прост, известен большинству пользователей и заключается в использовании специальной вставки:

    1. Выделите диапазон с формулами, которые нужно заменить на значения.
    2. Скопируйте его правой кнопкой мыши – Копировать(Copy) .
    3. Щелкните правой кнопкой мыши по выделенным ячейкам и выберите либо значок Значения (Values) :


    либо наведитесь мышью на команду Специальная вставка (Paste Special) , чтобы увидеть подменю:


    Из него можно выбрать варианты вставки значений с сохранением дизайна или числовых форматов исходных ячеек.

    В старых версиях Excel таких удобных желтых кнопочек нет, но можно просто выбрать команду Специальная вставка и затем опцию Значения (Paste Special — Values) в открывшемся диалоговом окне:

    Способ 2. Только клавишами без мыши

    При некотором навыке, можно проделать всё вышеперечисленное вообще на касаясь мыши:

    1. Копируем выделенный диапазон Ctrl + C
    2. Тут же вставляем обратно сочетанием Ctrl + V
    3. Жмём Ctrl , чтобы вызвать меню вариантов вставки
    4. Нажимаем клавишу с русской буквой З или используем стрелки, чтобы выбрать вариант Значения и подтверждаем выбор клавишей Enter :

    Способ 3. Только мышью без клавиш или Ловкость Рук

    Этот способ требует определенной сноровки, но будет заметно быстрее предыдущего. Делаем следующее:

    1. Выделяем диапазон с формулами на листе
    2. Хватаем за край выделенной области (толстая черная линия по периметру) и, удерживая ПРАВУЮ клавишу мыши, перетаскиваем на пару сантиметров в любую сторону, а потом возвращаем на то же место
    3. В появившемся контекстном меню после перетаскивания выбираем Копировать только значения (Copy As Values Only) .

    После небольшой тренировки делается такое действие очень легко и быстро. Главное, чтобы сосед под локоть не толкал и руки не дрожали 😉

    Способ 4. Кнопка для вставки значений на Панели быстрого доступа

    Ускорить специальную вставку можно, если добавить на панель быстрого доступа в левый верхний угол окна кнопку Вставить как значения. Для этого выберите Файл — Параметры — Панель быстрого доступа (File — Options — Customize Quick Access Toolbar) . В открывшемся окне выберите Все команды (All commands) в выпадающем списке, найдите кнопку Вставить значения (Paste Values) и добавьте ее на панель:

    Теперь после копирования ячеек с формулами будет достаточно нажать на эту кнопку на панели быстрого доступа:

    Кроме того, по умолчанию всем кнопкам на этой панели присваивается сочетание клавиш Alt + цифра (нажимать последовательно). Если нажать на клавишу Alt , то Excel подскажет цифру, которая за это отвечает:

    Способ 5. Макросы для выделенного диапазона, целого листа или всей книги сразу

    Если вас не пугает слово «макросы», то это будет, пожалуй, самый быстрый способ.

    Макрос для превращения всех формул в значения в выделенном диапазоне (или нескольких диапазонах, выделенных одновременно с Ctrl) выглядит так:

    Если вам нужно преобразовать в значения текущий лист, то макрос будет таким:

    И, наконец, для превращения всех формул в книге на всех листах придется использовать вот такую конструкцию:

    Код нужных макросов можно скопировать в новый модуль вашего файла (жмем Alt + F11 чтобы попасть в Visual Basic, далее Insert — Module). Запускать их потом можно через вкладку Разработчик — Макросы (Developer — Macros) или сочетанием клавиш Alt + F8 . Макросы будут работать в любой книге, пока открыт файл, где они хранятся. И помните, пожалуйста, о том, что действия выполненные макросом невозможно отменить — применяйте их с осторожностью.

    Способ 6. Для ленивых

    Если ломает делать все вышеперечисленное, то можно поступить еще проще — установить надстройку PLEX, где уже есть готовые макросы для конвертации формул в значения и делать все одним касанием мыши:

    • всё будет максимально быстро и просто
    • можно откатить ошибочную конвертацию отменой последнего действия или сочетанием Ctrl + Z как обычно
    • в отличие от предыдущего способа, этот макрос корректно работает, если на листе есть скрытые строки/столбцы или включены фильтры
    • любой из этих команд можно назначить любое удобное вам сочетание клавиш в Диспетчере горячих клавиш PLEX

    Источник

    0 / 0 / 0

    Регистрация: 23.09.2011

    Сообщений: 61

    1

    03.09.2012, 00:55. Показов 28842. Ответов 15


    Студворк — интернет-сервис помощи студентам

    Доброго времени суток !
    Вот столкнулся с такой пробелмой, ищу помощи..

    На листе Excel 2003 имеет несколько тысяч формул типа

    Код

    ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AR$10
    ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AА$10
    ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AB$10
    ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AC$105
    ='C: Budget- 2013[Co-Financing17.xls]1.1'!$AC$109

    итд.

    Нужно через автозамену (заменить все) заменить последнюю цифру во всех формулах, которые заканчиваются на 10 — в даном примере на 14 например, однако через автозамену это сделать не получается, так как $105, $109 также меняется на $145, $149, так как присутствует $10. Как сделать, чтобы замена не происходила в тех числах, которые состоят «визуально» в т.ч. и из заменяемого числа.

    Благодарю и низко кланяюсь..



    0



    Alex77755

    11482 / 3773 / 677

    Регистрация: 13.02.2009

    Сообщений: 11,145

    03.09.2012, 08:58

    2

    Несколько тысяч ссылок!!!
    Не стал бы такого делать никогда
    заменить можно макросом

    Visual Basic
    1
    2
    3
    4
    5
    
    Sub AVTOZAM()
        For Each c In UsedRange.Cells
            If Right(c.Formula, 2) = 10 Then c.Formula = Replace(c.Formula, "10", "14")
        Next
    End Sub



    2



    Апострофф

    Заблокирован

    03.09.2012, 10:08

    3

    Alex77755, 3-я строка

    Visual Basic
    1
    
    If Right(c.Formula, 2) = 10 Then c.Formula = Left$(c.Formula, Len(c.Formula) - 2) & 14

    иначе для подобных случаев с Replace результат м.б. непредсказуем

    =’C: Budget- 2010[Co-Financing10.xls]1.1′!$AR$10

    Результат
    =’C: Budget- 2014[Co-Financing14.xls]1.1′!$AR$14



    2



    11482 / 3773 / 677

    Регистрация: 13.02.2009

    Сообщений: 11,145

    03.09.2012, 10:10

    4

    Согласен



    1



    0 / 0 / 0

    Регистрация: 23.09.2011

    Сообщений: 61

    03.09.2012, 13:00

     [ТС]

    5

    Здорово..А можно было бы кнопку сделать де указываем число, которое надо заменить и число на которое надо сделать замену ?

    Добавлено через 32 минуты

    Цитата
    Сообщение от Pandora12
    Посмотреть сообщение

    Здорово..А можно было бы кнопку сделать де указываем число, которое надо заменить и число на которое надо сделать замену ?

    P.S.не запускается макрос, требует объект «object required»



    0



    Казанский

    15136 / 6410 / 1730

    Регистрация: 24.09.2011

    Сообщений: 9,999

    03.09.2012, 13:11

    6

    Visual Basic
    1
    
    For Each c In ActiveSheet.UsedRange.Cells

    Добавлено через 5 минут
    Можно оптимизировать:

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    
    Sub AVTOZAM()
        Dim c As Object, s$
        For Each c In Cells.SpecialCells(xlCellTypeFormulas)
            s = c.Formula
            If Right$(s, 2) = "10" Then Mid(s, Len(s) - 1) = "14": c.Formula = s
        Next
    End Sub



    1



    Alex77755

    11482 / 3773 / 677

    Регистрация: 13.02.2009

    Сообщений: 11,145

    03.09.2012, 13:24

    7

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Sub AVTOZAM()
     
    s = InputBox("Введите через запятую что на что менять", "", "10,14")
        For Each c In ActiveSheet.UsedRange.Cells
            If Right(c.Formula, Len(Trim(Split(s, ",")(0)))) = Trim(Split(s, ",")(0)) Then
                c.Formula = Left$(c.Formula, Len(c.Formula) - Len(Trim(Split(s, ",")(0)))) & Trim(Split(s, ",")(1))
            End If
        Next
    End Sub

    Добавлено через 4 минуты
    Или так:

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Sub AVTOZAM()
    Dim K, N
     
    s = InputBox("Введите через запятую что на что менять", "", "10,14")
    If s = "" Then Exit Sub
    K = Trim(Split(s, ",")(0))
    N = Trim(Split(s, ",")(1))
        For Each c In ActiveSheet.UsedRange.Cells
            If Right(c.Formula, Len(K)) = K Then
                c.Formula = Left$(c.Formula, Len(c.Formula) - Len(K)) & N
            End If
        Next
    End Sub



    0



    15136 / 6410 / 1730

    Регистрация: 24.09.2011

    Сообщений: 9,999

    03.09.2012, 14:32

    8

    Все-таки важно пробегать циклом только по ячейкам с формулами, иначе константы тоже будут заменяться, например 910 на 914.



    1



    Alex77755

    11482 / 3773 / 677

    Регистрация: 13.02.2009

    Сообщений: 11,145

    03.09.2012, 14:43

    9

    Казанский,
    Справедливо.
    Может тогда так?

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    Sub AVTOZAM()
    Dim K, N
     
    s = InputBox("Введите через запятую что на что менять", "", "10,14")
    If s = "" Then Exit Sub
    K = Trim(Split(s, ",")(0))
    N = Trim(Split(s, ",")(1))
        For Each C In ActiveSheet.UsedRange.Cells
        If C.Text <> C.Formula Then
            If Right(C.Formula, Len(K)) = K Then
                C.Formula = Left$(C.Formula, Len(C.Formula) - Len(K)) & N
            End If
        End If
        Next
    End Sub



    0



    Казанский

    15136 / 6410 / 1730

    Регистрация: 24.09.2011

    Сообщений: 9,999

    03.09.2012, 14:51

    10

    Проще

    Visual Basic
    1
    
    If C.HasFormula Then

    Но я же приводил выше код для цикла по ячейкам с формулами — меньше работы:

    Visual Basic
    1
    
    For Each c In Cells.SpecialCells(xlCellTypeFormulas)



    2



    0 / 0 / 0

    Регистрация: 23.09.2011

    Сообщений: 61

    03.09.2012, 15:37

     [ТС]

    11

    Не работает кнопка в моем Excel 2003. Выдает ошибку типа нарушения в » Advanced Find and Replace» Able bits.com и предлагает купить эту программку и инсталлировать ее… Как этот скрипт переписать в просто в макрос.. без кнопки тогда ? Действительно, как написал товрищ, скрипт меняет в том числе и то, что менять НЕ требуется, как раз, как в примере, который он привел.. И еще на один момент обратил внимание..если надо заменить ОДНОЗНАЧНОЕ число например 9 на 13,то замена не производится .. Скрипт начинает считать и довольно быстро завершается, но ошибку не выдает, может что-то и меняет (сразу не определишь -большой массив), но полноценной замены не производится..во всех тех местах, где это требуется..



    0



    Alex77755

    11482 / 3773 / 677

    Регистрация: 13.02.2009

    Сообщений: 11,145

    03.09.2012, 15:53

    12

    Проверял в своём 2003.

    как написал товрищ, скрипт меняет в том числе и то, что менять НЕ требуется

    Проверяет и меняет только последние символы в количестве равном количесву символов в первом числе на второе число. Меняет только в формулах. Переделать в макрос? Легко!

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    Sub Макрос()
    Dim K, N
     
    s = InputBox("Введите через запятую что на что менять", "", "10,14")
    If s = "" Then Exit Sub
    K = Trim(Split(s, ",")(0))
    N = Trim(Split(s, ",")(1))
        For Each C In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
            If Right(C.Formula, Len(K)) = K Then
                C.Formula = Left$(C.Formula, Len(C.Formula) - Len(K)) & N
            End If
        Next
    End Sub



    1



    Dmitrii

    2617 / 547 / 109

    Регистрация: 21.03.2012

    Сообщений: 1,051

    03.09.2012, 16:36

    13

    Регулярные выражения должны сработать быстрее, чем строковые функции. Пример:

    Visual Basic
    1
    2
    3
    4
    5
    6
    
    Set objRegExp = CreateObject("VBScript.RegExp")
    objRegExp.Pattern = "10$"
    For Each c In Cells.SpecialCells(xlCellTypeFormulas)
        c.Formula = objRegExp.Replace(c.Formula, "14")
    Next
    Set objRegExp = Nothing



    1



    15136 / 6410 / 1730

    Регистрация: 24.09.2011

    Сообщений: 9,999

    03.09.2012, 17:12

    14

    И что, если заменять нечего, все равно присваивать формулу? Тогда уж .Test допишите.



    1



    0 / 0 / 0

    Регистрация: 23.09.2011

    Сообщений: 61

    03.09.2012, 18:23

     [ТС]

    15

    Рябята..вроде зработало..Щас еще поизучаю и наишу.. респект и уважуха..!!!!!!



    0



    2617 / 547 / 109

    Регистрация: 21.03.2012

    Сообщений: 1,051

    03.09.2012, 22:48

    16

    Казанский, это лишь пример.



    0



    На чтение 4 мин Опубликовано 25.01.2021

    Часто перед пользователями табличного редактора Эксель встает задача, когда необходимо реализовать замену формул на значения. Осуществить это процедуру можно различными способами. В статье мы разберем множество методов, позволяющих заменить формулу на значения в табличном документе.

    Содержание

    1. Первый метод: стандартная замена формул на значения
    2. Второй метод: использование горячих клавиш табличного редактора
    3. Третий метод: замена при помощи мышки
    4. Четвертый метод: применение специальной кнопки для вставки значений
    5. Пятый метод: использование специальных макросов
    6. Заключение и выводы о быстрой замене формул на значения в табличном документе

    Первый метод: стандартная замена формул на значения

    Это самый известный и распространенный способ, позволяющий заменить формулы на значения. Подробная инструкция выглядит так:

    1. Первоначально производим выделение того диапазона данных, в котором мы желаем реализовать замену формул на значения.
    2. Реализуем копирование данных. Для этого нажимаем правой клавишей мышки по выбранному диапазону и в контекстном меню кликаем на элемент «Копировать». Альтернативный вариант – использование комбинации клавиш «Ctrl+C».
    3. Кликаем ПКМ по выбранному диапазону. Здесь можно выбрать иконку под названием «Значения».

    Как быстро заменить формулы на значения в таблице Excel

    1. Следует навести мышку на элемент «Специальная вставка», чтобы раскрыть перечень функций.

    Как быстро заменить формулы на значения в таблице Excel

    1. Здесь располагаются все возможные вариации вставки значений с сохранностью форматирования исходных ячеек.

    Стоит отметить, что в ранних версиях табличного редактора отсутствуют такие дополнительные значки, поэтому все операции производятся через такое окно:

    Как быстро заменить формулы на значения в таблице Excel

    Второй метод: использование горячих клавиш табличного редактора

    Все вышеприведенные манипуляции можно реализовать при помощи специальных горячих клавиш табличного редактора. Подробная инструкция выглядит так:

    1. Реализуем копирование нужного диапазона при помощи комбинации клавиш «Ctrl+C».
    2. Сюда же осуществляем обратную вставку при помощи комбинации клавиш «Ctrl+V».
    3. Щелкаем на «Ctrl», чтобы отобразить небольшое меню, в котором будут предложены вариации вставки.
    4. Щёлкаем на «З» на русской раскладке или же используем стрелочки для выбора параметра «Значения». Осуществляем подтверждение всех проделанных действий при помощи клавиши «Enter», расположенной на клавиатуре.

    Третий метод: замена при помощи мышки

    Этот метод позволяет осуществить процедуру замены формул на значения намного быстрее вышеприведенных методов. Здесь используется только компьютерная мышка. Подробная инструкция выглядит так:

    1. Производим выделение ячеек с формулами на рабочем листе табличного документа.
    2. Беремся за рамку выделенного фрагмента и, зажав ПКМ, осуществляем перетаскивание на два см в какую-либо сторону, а затем реализуем возврат на начальную позицию.
    3. После осуществления этой процедуры отобразилось небольшое специальное контекстное меню, в котором необходимо выбрать элемент, имеющий наименование «Копировать только значения».

    Четвертый метод: применение специальной кнопки для вставки значений

    Значительно ускорить процедуру специальной вставки можно при помощи добавления специальной кнопки «Вставить как значения» на панель быстрого доступа. Подробная инструкция по добавлению и использованию выглядит так:

    1. Передвигаемся в подраздел «Файл».
    2. Выбираем элемент, имеющий наименование «Параметры».
    3. Щёлкаем левой клавишей мышки на «Панель быстрого доступа».
    4. На экране отобразилось окошко, в котором можно добавить разнообразные элементы на панель быстрого доступа. Раскрываем перечень под названием «Все команды».
    5. В раскрывшемся перечне находим элемент под названием «Вставить значения» и добавляем его на панель быстрого доступа при помощи кнопки «Добавить». Как быстро заменить формулы на значения в таблице Excel
    6. Готово! Мы добавили эту кнопку на панель быстрого доступа.
    7. Теперь остается только скопировать диапазон ячеек, в котором располагаются необходимые нам формулы, а затем нажать на только что добавленную кнопку на панели быстрого доступа.

    Как быстро заменить формулы на значения в таблице Excel

    Стоит заметить, что стандартно всем кнопку на панели быстрого доступа задается комбинация клавиш «Alt+цифра». После клика на «Alt» на верхней панели покажется цифра, обозначающая эту кнопку.

    Как быстро заменить формулы на значения в таблице Excel

    Пятый метод: использование специальных макросов

    Использование макросов – самый быстрый способ, позволяющий заменить формулы на значения. Так выглядит макрос, позволяющий заменить все формулы на значения в выбранном диапазоне:

    Как быстро заменить формулы на значения в таблице Excel

    Так выглядит макрос, позволяющий заменить все формулы на значения на выбранном рабочем листике табличного документа:

    Как быстро заменить формулы на значения в таблице Excel

    Так выглядит макрос, позволяющий заменить все формулы на значения на всех рабочих листиках табличного документа:

    Как быстро заменить формулы на значения в таблице Excel

    Подробная инструкция по использованию макросов выглядит так:

    1. При помощи комбинации клавиш «Alt+F11» открываем редактор VBA.
    2. Открываем подраздел «Insert», а затем жмем левой клавишей мышки по элементу «Module».
    3. Сюда мы вставляем один из вышеприведенных кодов.
    4. Запуск пользовательских макросов осуществляется через подраздел «Макросы», располагающийся в разделе «Разработчик». Альтернативный вариант – использование комбинации клавиш «Alt+F8» на клавиатуре.
    5. Макросы работают в любом табличном документе.

    Стоит помнить, что манипуляции, реализованные при помощи макроса, нельзя отменить.

    Заключение и выводы о быстрой замене формул на значения в табличном документе

    Мы выяснили, что существует множество вариантов, позволяющих реализовать замену формул на значения в табличном документе. Реализовать эту процедуру можно при помощи специальной вставки, комбинаций клавиш, компьютерной мышки, персональных макросов и специальной кнопки, добавляемой на панель быстрого доступа. Каждый метод имеет свои преимущества и недостатки. Пользователь может самостоятельно подобрать для себя наиболее удобный и быстрый метод, позволяющий реализовать замену формул на значения в табличном документе.

    Оцените качество статьи. Нам важно ваше мнение:

    Преобразование формул в значения

    Формулы – это хорошо. Они автоматически пересчитываются при любом изменении исходных данных, превращая Excel из «калькулятора-переростка» в мощную автоматизированную систему обработки поступающих данных. Они позволяют выполнять сложные вычисления с хитрой логикой и структурой. Но иногда возникают ситуации, когда лучше бы вместо формул в ячейках остались значения. Например:

    • Вы хотите зафиксировать цифры в вашем отчете на текущую дату.
    • Вы не хотите, чтобы клиент увидел формулы, по которым вы рассчитывали для него стоимость проекта (а то поймет, что вы заложили 300% маржи на всякий случай).
    • Ваш файл содержит такое больше количество формул, что Excel начал жутко тормозить при любых, даже самых простых изменениях в нем, т.к. постоянно их пересчитывает (хотя, честности ради, надо сказать, что это можно решить временным отключением автоматических вычислений на вкладке Формулы – Параметры вычислений).
    • Вы хотите скопировать диапазон с данными из одного места в другое, но при копировании «сползут» все ссылки в формулах.

    В любой подобной ситуации можно легко удалить формулы, оставив в ячейках только их значения. Давайте рассмотрим несколько способов и ситуаций.

    Способ 1. Классический

    Этот способ прост, известен большинству пользователей и заключается в использовании специальной вставки:

    1. Выделите диапазон с формулами, которые нужно заменить на значения.
    2. Скопируйте его правой кнопкой мыши – Копировать (Copy).
    3. Щелкните правой кнопкой мыши по выделенным ячейкам и выберите либо значок Значения (Values):

      преобразование формул в значения в Excel
      либо наведитесь мышью на команду Специальная вставка (Paste Special), чтобы увидеть подменю:

      formulas-to-values2.png
      Из него можно выбрать варианты вставки значений с сохранением дизайна или числовых форматов исходных ячеек.

      В старых версиях Excel таких удобных желтых кнопочек нет, но можно просто выбрать команду Специальная вставка и затем опцию Значения (Paste Special — Values) в открывшемся диалоговом окне:

      formulas-to-values3.png

    Способ 2. Только клавишами без мыши

    При некотором навыке, можно проделать всё вышеперечисленное вообще на касаясь мыши:

    1. Копируем выделенный диапазон Ctrl+C
    2. Тут же вставляем обратно сочетанием Ctrl+V
    3. Жмём Ctrl, чтобы вызвать меню вариантов вставки
    4. Нажимаем клавишу с русской буквой З или используем стрелки, чтобы выбрать вариант Значения и подтверждаем выбор клавишей Enter:

    Замена формул на значения соч.клавиш

    Способ 3. Только мышью без клавиш или Ловкость Рук

    Этот способ требует определенной сноровки, но будет заметно быстрее предыдущего. Делаем следующее:

    1. Выделяем диапазон с формулами на листе
    2. Хватаем за край выделенной области (толстая черная линия по периметру) и, удерживая ПРАВУЮ клавишу мыши, перетаскиваем на пару сантиметров в любую сторону, а потом возвращаем на то же место
    3. В появившемся контекстном меню после перетаскивания выбираем Копировать только значения (Copy As Values Only).

    formulas-to-values4.gif

    После небольшой тренировки делается такое действие очень легко и быстро. Главное, чтобы сосед под локоть не толкал и руки не дрожали ;)

    Способ 4. Кнопка для вставки значений на Панели быстрого доступа

    Ускорить специальную вставку можно, если добавить на панель быстрого доступа в левый верхний угол окна кнопку Вставить как значения. Для этого выберите Файл — Параметры — Панель быстрого доступа (File — Options — Customize Quick Access Toolbar). В открывшемся окне выберите Все команды (All commands) в выпадающем списке, найдите кнопку Вставить значения (Paste Values) и добавьте ее на панель:

    Добавление кнопки вставки значений на панель быстрого доступа

    Теперь после копирования ячеек с формулами будет достаточно нажать на эту кнопку на панели быстрого доступа:

    Кнопка вставки значений на панели быстрого доступа

    Кроме того, по умолчанию всем кнопкам на этой панели присваивается сочетание клавиш Alt + цифра (нажимать последовательно). Если нажать на клавишу Alt, то Excel подскажет цифру, которая за это отвечает:

    Подсветка горячих клавиш

    Способ 5. Макросы для выделенного диапазона, целого листа или всей книги сразу

    Если вас не пугает слово «макросы», то это будет, пожалуй, самый быстрый способ.

    Макрос для превращения всех формул в значения в выделенном диапазоне (или нескольких диапазонах, выделенных одновременно с Ctrl) выглядит так:

    Sub Formulas_To_Values_Selection()
    'преобразование формул в значения в выделенном диапазоне(ах)
        Dim smallrng As Range
        For Each smallrng In Selection.Areas
            smallrng.Value = smallrng.Value
        Next smallrng
    End Sub
    

    Если вам нужно преобразовать в значения текущий лист, то макрос будет таким:

    Sub Formulas_To_Values_Sheet()
    'преобразование формул в значения на текущем листе
        ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
    End Sub
     

    И, наконец, для превращения всех формул в книге на всех листах придется использовать вот такую конструкцию:

    Sub Formulas_To_Values_Book()
    'преобразование формул в значения во всей книге
        For Each ws In ActiveWorkbook.Worksheets
            ws.UsedRange.Value = ws.UsedRange.Value
        Next ws
    End Sub
     

    Код нужных макросов можно скопировать в новый модуль вашего файла (жмем Alt+F11 чтобы попасть в Visual Basic, далее Insert — Module). Запускать их потом можно через вкладку Разработчик — Макросы (Developer — Macros) или сочетанием клавиш Alt+F8. Макросы будут работать в любой книге, пока открыт файл, где они хранятся. И помните, пожалуйста, о том, что действия выполненные макросом невозможно отменить — применяйте их с осторожностью. 

    Способ 6. Для ленивых

    Если ломает делать все вышеперечисленное, то можно поступить еще проще — установить надстройку PLEX, где уже есть готовые макросы для конвертации формул в значения и делать все одним касанием мыши:

    formulas-to-values.png

    В этом случае:

    • всё будет максимально быстро и просто
    • можно откатить ошибочную конвертацию отменой последнего действия или сочетанием Ctrl+Z как обычно
    • в отличие от предыдущего способа, этот макрос корректно работает, если на листе есть скрытые строки/столбцы или включены фильтры
    • любой из этих команд можно назначить любое удобное вам сочетание клавиш в Диспетчере горячих клавиш PLEX

    Ссылки по теме

    • Что такое макросы, как их использовать, копировать и запускать
    • Как скопировать формулы без сдвига ссылок
    • Как считать в Excel без формул

    Добрый день! Сделал файл,в нем 5 колонок по 100 строк с формулами. Но  когда все 500 формул на листе,все начинает тормозить (в том числе и макросы),а у меня будет 5 таких листов.. :( Возможно ли заменить формулы макросом,и если да- помогите пожалуйста.. Спасибо.


    ЦитироватьНо  когда все 500 формул на листе,все начинает тормозить

    А чего Вы хотели? Когда у Вас ссылки на весь столбец, да еще в 2007. Предлагаю не писать макрос (хотя, если так хочется, то не вопрос — только скажите), а сделать полегче формулы. А для большей реалистичности положите сюда Ваш файлик без формул, но с максимально заполненным листом Б (я понимаю, что там данные будут дописываться, но все равно — строк 1000 у Вас уже есть?)

    Скажи мне, кудесник, любимец ба’гов…

    Яндекс-деньги: 41001632713405
    Webmoney: R289877159277; Z102172301748; E177867141995


    Добрый день _Boroda_. Спасибо что откликнулись и помогли! Вы правы,что-то я разогнался с диапазонами :),сократил до 1000 строк. Сделал пока 1 лист,вроде полегчало:) посмотрим что будет с 5 листами.. А на счет формулы не знаю,может не идеал,слепил из того что есть в Excel 2007.. :(


    Используйте динамические диапазоны

    Скажи мне, кудесник, любимец ба’гов…

    Яндекс-деньги: 41001632713405
    Webmoney: R289877159277; Z102172301748; E177867141995


    Это как? ???Я только учусь.. Если можно примерчик..


    Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…
    www.excel-vba.ru
    Просто СПАСИБО [+оказать+]
    Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453


    Спасибо. Будем разбираться.. :)


    Формулировка задачи:

    Добрый день ! В приложенном файле 3 столбца с формулами — в каждой ячейке ссылки на другой лист. Задана переменная x = W Нужно, чтобы в формулах первого столбца символ «A» заменился на значение переменной (то есть чтобы в первом столбце вместо ссылок на столбец A листа 2 были ссылки на столбец W листа 2). Буду очень благодарна за помощь!

    Код к задаче: «Замена части формулы»

    textual

    x = "W"
    Range("A:A").Replace "A", x, xlPart

    Полезно ли:

    9   голосов , оценка 4.111 из 5

    Понравилась статья? Поделить с друзьями:
  • Макросы в excel если ячейка пуста то
  • Макросы в excel кнопки перехода
  • Макросы в excel если равно то
  • Макросы в excel календаря
  • Макросы в excel если значение в ячейке