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

В данной статье представлены разные варианты макросов для быстрой замены формул на значения в документах 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. В панели разработчика создаем модуль (контейнер) для макроса:
    • Кликаем на пиктограмму 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. После записи макроса следует зайти в панели разработчика в список макросов и кликнув по кнопке параметры назначить макросу сочетание клавиш.

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

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

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

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

    Содержание

    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

    Источник

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

    Формулы – это хорошо. Они автоматически пересчитываются при любом изменении исходных данных, превращая 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 без формул

    This macro will convert every formula in an entire workbook into its respective value. This is basically a quick way to replace to do a copy-paste values except that nothing is moved or re-arranged. Just make sure to remember that this one will not only work on the active sheet, but on the entire open workbook. This is a good thing to use if you are distributing your workbook and you don’t want the recipients to know how you did something or where certain numbers came from.

    Where to install the macro:  Module

    Replace Formulas with Values (Entire Workbook)

    Sub FormulasToValues_EntireWorkbook()

    'This Macro will replace all formulas from an entire workbook
    'with their respective values. It will just changes all
    'formulas to values.

    WCount = Worksheets.Count
    For i = 1 To WCount
    If Worksheets(WCount - i + 1).Visible Then
    Worksheets(WCount - i + 1).Select
    RCount = ActiveCell.SpecialCells(xlLastCell).Row
    CCount = ActiveCell.SpecialCells(xlLastCell).Column
    For j = 1 To RCount
    For k = 1 To CCount
    Worksheets(WCount - i + 1).Cells(j, k) = Worksheets(WCount - i + 1).Cells(j, k).Value
    Next k
    Next j
    End If
    Next i

    End Sub


    Excel VBA Course

    Excel VBA Course — From Beginner to Expert

    200+ Video Lessons
    50+ Hours of Instruction
    200+ Excel Guides

    Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

    View Course

    Similar Content on TeachExcel

    Print Preview Screen Display for The Entire Workbook in Excel

    Macro: This free Excel macro allows you to quickly and easily display the print preview windo…

    Using Formulas with Tables in Excel

    Tutorial:
    Easy way to reference data tables and make formulas within a data table. This allows you …

    Stop Formula Calculation in Excel — Increase Worksheet Performance

    Tutorial:
    I’ll show you how to stop formulas and functions from performing their calculations and u…

    Print Entire Workbook in Excel

    Macro: This free excel macro allows you to print the entire workbook in Excel. You can easil…

    List all Conditional Formatting Formulas in Excel

    Tutorial: List all conditional formatting formulas in a worksheet in Excel.
    This allows you to quick…

    Email the Entire Workbook as a PDF Attachment

    : How to convert the entire Excel workbook into a PDF and email it as an attachment….

    How to Install the Macro

    1. Select and copy the text from within the grey box above.
    2. Open the Microsoft Excel file in which you would like the Macro to function.
    3. Press «Alt + F11» — This will open the Visual Basic Editor — Works for all Excel Versions.
       Or For other ways to get there, Click Here.
    4. On the new window that opens up, go to the left side where the vertical pane is located. Locate your Excel file; it will be called VBAProject (YOUR FILE’S NAME HERE) and click this.
    5. If the Macro goes in a Module, Click Here, otherwise continue to Step 8.
    6. If the Macro goes in the Workbook or ThisWorkbook, Click Here, otherwise continue to Step 8.
    7. If the Macro goes in the Worksheet Code, Click Here, otherwise continue to Step 8.
    8. Close the Microsoft Visual Basic Editor window and save the Excel file. When you close the Visual Basic Editor window, the regular Excel window will not close.
    9. You are now ready to run the macro.

    На чтение 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. Макросы работают в любом табличном документе.

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

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

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

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

    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



    Добрый день! Сделал файл,в нем 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


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


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