Преобразование формул в значения
Формулы – это хорошо. Они автоматически пересчитываются при любом изменении исходных данных, превращая Excel из «калькулятора-переростка» в мощную автоматизированную систему обработки поступающих данных. Они позволяют выполнять сложные вычисления с хитрой логикой и структурой. Но иногда возникают ситуации, когда лучше бы вместо формул в ячейках остались значения. Например:
- Вы хотите зафиксировать цифры в вашем отчете на текущую дату.
- Вы не хотите, чтобы клиент увидел формулы, по которым вы рассчитывали для него стоимость проекта (а то поймет, что вы заложили 300% маржи на всякий случай).
- Ваш файл содержит такое больше количество формул, что Excel начал жутко тормозить при любых, даже самых простых изменениях в нем, т.к. постоянно их пересчитывает (хотя, честности ради, надо сказать, что это можно решить временным отключением автоматических вычислений на вкладке Формулы – Параметры вычислений).
- Вы хотите скопировать диапазон с данными из одного места в другое, но при копировании «сползут» все ссылки в формулах.
В любой подобной ситуации можно легко удалить формулы, оставив в ячейках только их значения. Давайте рассмотрим несколько способов и ситуаций.
Способ 1. Классический
Этот способ прост, известен большинству пользователей и заключается в использовании специальной вставки:
- Выделите диапазон с формулами, которые нужно заменить на значения.
- Скопируйте его правой кнопкой мыши – Копировать (Copy).
- Щелкните правой кнопкой мыши по выделенным ячейкам и выберите либо значок Значения (Values):
либо наведитесь мышью на команду Специальная вставка (Paste Special), чтобы увидеть подменю:
Из него можно выбрать варианты вставки значений с сохранением дизайна или числовых форматов исходных ячеек.В старых версиях Excel таких удобных желтых кнопочек нет, но можно просто выбрать команду Специальная вставка и затем опцию Значения (Paste Special — Values) в открывшемся диалоговом окне:
Способ 2. Только клавишами без мыши
При некотором навыке, можно проделать всё вышеперечисленное вообще на касаясь мыши:
- Копируем выделенный диапазон Ctrl+C
- Тут же вставляем обратно сочетанием Ctrl+V
- Жмём Ctrl, чтобы вызвать меню вариантов вставки
- Нажимаем клавишу с русской буквой З или используем стрелки, чтобы выбрать вариант Значения и подтверждаем выбор клавишей Enter:
Способ 3. Только мышью без клавиш или Ловкость Рук
Этот способ требует определенной сноровки, но будет заметно быстрее предыдущего. Делаем следующее:
- Выделяем диапазон с формулами на листе
- Хватаем за край выделенной области (толстая черная линия по периметру) и, удерживая ПРАВУЮ клавишу мыши, перетаскиваем на пару сантиметров в любую сторону, а потом возвращаем на то же место
- В появившемся контекстном меню после перетаскивания выбираем Копировать только значения (Copy As Values Only).
После небольшой тренировки делается такое действие очень легко и быстро. Главное, чтобы сосед под локоть не толкал и руки не дрожали
Способ 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, где уже есть готовые макросы для конвертации формул в значения и делать все одним касанием мыши:
В этом случае:
- всё будет максимально быстро и просто
- можно откатить ошибочную конвертацию отменой последнего действия или сочетанием Ctrl+Z как обычно
- в отличие от предыдущего способа, этот макрос корректно работает, если на листе есть скрытые строки/столбцы или включены фильтры
- любой из этих команд можно назначить любое удобное вам сочетание клавиш в Диспетчере горячих клавиш PLEX
Ссылки по теме
- Что такое макросы, как их использовать, копировать и запускать
- Как скопировать формулы без сдвига ссылок
- Как считать в 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. Макросы будут работать в любой книге, пока открыт файл, где они хранятся.
Внимание! Действия выполненные макросом невозможно отменить – применяйте их с осторожностью.
На чтение 4 мин Опубликовано 25.01.2021
Часто перед пользователями табличного редактора Эксель встает задача, когда необходимо реализовать замену формул на значения. Осуществить это процедуру можно различными способами. В статье мы разберем множество методов, позволяющих заменить формулу на значения в табличном документе.
Содержание
- Первый метод: стандартная замена формул на значения
- Второй метод: использование горячих клавиш табличного редактора
- Третий метод: замена при помощи мышки
- Четвертый метод: применение специальной кнопки для вставки значений
- Пятый метод: использование специальных макросов
- Заключение и выводы о быстрой замене формул на значения в табличном документе
Первый метод: стандартная замена формул на значения
Это самый известный и распространенный способ, позволяющий заменить формулы на значения. Подробная инструкция выглядит так:
- Первоначально производим выделение того диапазона данных, в котором мы желаем реализовать замену формул на значения.
- Реализуем копирование данных. Для этого нажимаем правой клавишей мышки по выбранному диапазону и в контекстном меню кликаем на элемент «Копировать». Альтернативный вариант – использование комбинации клавиш «Ctrl+C».
- Кликаем ПКМ по выбранному диапазону. Здесь можно выбрать иконку под названием «Значения».
- Следует навести мышку на элемент «Специальная вставка», чтобы раскрыть перечень функций.
- Здесь располагаются все возможные вариации вставки значений с сохранностью форматирования исходных ячеек.
Стоит отметить, что в ранних версиях табличного редактора отсутствуют такие дополнительные значки, поэтому все операции производятся через такое окно:
Второй метод: использование горячих клавиш табличного редактора
Все вышеприведенные манипуляции можно реализовать при помощи специальных горячих клавиш табличного редактора. Подробная инструкция выглядит так:
- Реализуем копирование нужного диапазона при помощи комбинации клавиш «Ctrl+C».
- Сюда же осуществляем обратную вставку при помощи комбинации клавиш «Ctrl+V».
- Щелкаем на «Ctrl», чтобы отобразить небольшое меню, в котором будут предложены вариации вставки.
- Щёлкаем на «З» на русской раскладке или же используем стрелочки для выбора параметра «Значения». Осуществляем подтверждение всех проделанных действий при помощи клавиши «Enter», расположенной на клавиатуре.
Третий метод: замена при помощи мышки
Этот метод позволяет осуществить процедуру замены формул на значения намного быстрее вышеприведенных методов. Здесь используется только компьютерная мышка. Подробная инструкция выглядит так:
- Производим выделение ячеек с формулами на рабочем листе табличного документа.
- Беремся за рамку выделенного фрагмента и, зажав ПКМ, осуществляем перетаскивание на два см в какую-либо сторону, а затем реализуем возврат на начальную позицию.
- После осуществления этой процедуры отобразилось небольшое специальное контекстное меню, в котором необходимо выбрать элемент, имеющий наименование «Копировать только значения».
Четвертый метод: применение специальной кнопки для вставки значений
Значительно ускорить процедуру специальной вставки можно при помощи добавления специальной кнопки «Вставить как значения» на панель быстрого доступа. Подробная инструкция по добавлению и использованию выглядит так:
- Передвигаемся в подраздел «Файл».
- Выбираем элемент, имеющий наименование «Параметры».
- Щёлкаем левой клавишей мышки на «Панель быстрого доступа».
- На экране отобразилось окошко, в котором можно добавить разнообразные элементы на панель быстрого доступа. Раскрываем перечень под названием «Все команды».
- В раскрывшемся перечне находим элемент под названием «Вставить значения» и добавляем его на панель быстрого доступа при помощи кнопки «Добавить».
- Готово! Мы добавили эту кнопку на панель быстрого доступа.
- Теперь остается только скопировать диапазон ячеек, в котором располагаются необходимые нам формулы, а затем нажать на только что добавленную кнопку на панели быстрого доступа.
Стоит заметить, что стандартно всем кнопку на панели быстрого доступа задается комбинация клавиш «Alt+цифра». После клика на «Alt» на верхней панели покажется цифра, обозначающая эту кнопку.
Пятый метод: использование специальных макросов
Использование макросов – самый быстрый способ, позволяющий заменить формулы на значения. Так выглядит макрос, позволяющий заменить все формулы на значения в выбранном диапазоне:
Так выглядит макрос, позволяющий заменить все формулы на значения на выбранном рабочем листике табличного документа:
Так выглядит макрос, позволяющий заменить все формулы на значения на всех рабочих листиках табличного документа:
Подробная инструкция по использованию макросов выглядит так:
- При помощи комбинации клавиш «Alt+F11» открываем редактор VBA.
- Открываем подраздел «Insert», а затем жмем левой клавишей мышки по элементу «Module».
- Сюда мы вставляем один из вышеприведенных кодов.
- Запуск пользовательских макросов осуществляется через подраздел «Макросы», располагающийся в разделе «Разработчик». Альтернативный вариант – использование комбинации клавиш «Alt+F8» на клавиатуре.
- Макросы работают в любом табличном документе.
Стоит помнить, что манипуляции, реализованные при помощи макроса, нельзя отменить.
Заключение и выводы о быстрой замене формул на значения в табличном документе
Мы выяснили, что существует множество вариантов, позволяющих реализовать замену формул на значения в табличном документе. Реализовать эту процедуру можно при помощи специальной вставки, комбинаций клавиш, компьютерной мышки, персональных макросов и специальной кнопки, добавляемой на панель быстрого доступа. Каждый метод имеет свои преимущества и недостатки. Пользователь может самостоятельно подобрать для себя наиболее удобный и быстрый метод, позволяющий реализовать замену формул на значения в табличном документе.
Оцените качество статьи. Нам важно ваше мнение:
Skip to content
На чтение 3 мин. Просмотров 3.5k.
Что делает макрос: Этот макрос помогает преобразовать все формулы в заданном диапазоне в значения.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Как использовать
Как макрос работает
В этом макросе, мы используем две переменные объекта Range. Одна из переменных отражает объем данных, с которым мы работаем, другая использует диапазон для хранения каждой отдельной ячейки. Каждый раз, когда активируется ячейка, мы проверяем, содержит ли
она формулу. Если это так, мы заменим формулу значением, которое отображается в ячейке.
Код макроса
Sub PreobrazovatFormuliVZnacheniya() 'Щаг 1: Объявляем переменные Dim MyRange As Range Dim MyCell As Range 'Шаг 2: Сохраните книгу прежде, чем измените ячейки? Select Case MsgBox("Перед изменением ячеек" & _ "Сохранить книгу?", vbYesNoCancel) Case Is = vbYes ThisWorkbook.Save Case Is = vbCancel Exit Sub End Select 'Шаг 3: Определяем целевой диапазон Set MyRange = Selection 'Шаг 4: Запускаем цикл по диапазону For Each MyCell In MyRange 'Шаг 5: Если в ячейке есть формула, устанавливаем значение If MyCell.HasFormula Then MyCell.Formula = MyCell.Value End If 'Шаг 6: Получаем следующую ячейку в диапазоне Next MyCell End Sub
Как этот код работает
- Шаг 1 объявляет две переменные объекта Range.
- При выполнении макрос уничтожает стек отката. Это означает, что вы не сможете отменить изменения, поэтому нужно сохранить книгу перед запуском макроса. Это делает Шаг 2.
- Здесь мы вызываем окно сообщения, которое спрашивает, хотим ли мы сохранить книгу в первую очередь. Затем он дает нам три варианта: Да, Нет и Отмена. Щелчок Да сохраняет книгу и продолжает с помощью макроса. Нажатие кнопки Отмена выходит из процедуры без запуска макроса. Щелчок Нет запускает макрос без сохранения рабочей книги.
- Шаг 3 заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем выбранный диапазон — диапазон, который был выбран в электронной таблице. Вы можете легко установить переменную MyRange в определенном диапазоне, таком как Range («A1:Z100»). Кроме того, если ваш целевой диапазон является именованный диапазон, вы можете просто ввести его имя: Range («MyNamedRange»).
- тот этап начинает цикл через каждую ячейку в целевом диапазоне, активизируя каждую ячейку. После того, как ячейка активируется, макрос использует свойство HasFormula, чтобы проверить, содержит ли ячейка формулу. Если содержит, мы устанавливаем ячейку равную значению, которое отображается в ячейке. Это эффективно заменяет формулу с жестко предопределенным значением.
- Шаг 6 повторяет цикл, чтобы получить следующую ячейку. После просмотра всех ячеек в целевом диапазоне макрос заканчивается.
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11 на клавиатуре.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.
- Что делает макрос
- Код макроса
- Как работает макрос
- Как использовать
- Скачать файл
Ссылка на это место страницы:
#zadacha
Этот макрос помогает преобразовать все формулы в заданном диапазоне в значения.
В этом макросе, мы используем две переменные объекта Range. Одна из переменных содержит объем данных, с которым мы работаем, другая использует диапазон для хранения каждой отдельной ячейки. Каждый раз, когда активируется ячейка, мы проверяем, содержит ли она формулу. Если это так — мы заменим формулу значением, которое отображается в ячейке.
Ссылка на это место страницы:
#formula
Sub
PreobrazovatFormuliVZnacheniya()
Dim
MyRange
As
Range
Dim
MyCell
As
Range
Select
Case
MsgBox(
"Перед изменением ячеек"
& _
" Сохранить книгу?"
, vbYesNoCancel)
Case
Is
= vbYes
ThisWorkbook.Save
Case
Is
= vbCancel
Exit
Sub
End
Select
Set
MyRange = Selection
For
Each
MyCell
In
MyRange
If
MyCell.HasFormula
Then
MyCell.Formula = MyCell.Value
End
If
Next
MyCell
End
Sub
Ссылка на это место страницы:
#kak
1. Шаг 1 объявляет две переменные объекта Range.
2. При выполнении макрос уничтожает стек отката. Это означает, что вы не сможете отменить изменения, поэтому нужно сохранить книгу перед запуском макроса. Это делает Шаг 2.
3. Здесь мы вызываем окно сообщения, которое спрашивает, хотим ли мы сохранить книгу. Затем он дает нам три варианта: Да, Нет и Отмена. Выбор Да сохраняет книгу и продолжает макрос. Нажатие кнопки Отмена выходит из процедуры без запуска макроса. Нажатие Нет запускает макрос без сохранения рабочей книги.
4. Шаг 4 заполняет переменную MyRange с целевым диапазоном. В этом примере мы используем выбранный диапазон — диапазон, который был выбран в электронной таблице. Вы можете легко установить переменную MyRange в определенном диапазоне, таком как Range («A1:Z100»). Кроме того, если ваш целевой диапазон является именованным диапазоном, вы можете просто ввести его имя: Range («MyNamedRange»).
5. Этот этап запускает цикл по каждой ячейке в целевом диапазоне. После того, как ячейка активируется, макрос использует свойство HasFormula, чтобы проверить, содержит ли ячейка формулу. Если содержит, мы устанавливаем ячейку равную значению, которое отображается в ячейке.
6. Шаг 6 повторяет цикл, чтобы получить следующую ячейку. После просмотра всех ячеек в целевом диапазоне макрос заканчивается.
Ссылка на это место страницы:
#touse
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
Ссылка на это место страницы:
#file
Файлы статей доступны только зарегистрированным пользователям.
1. Введите свою почту
2. Нажмите Зарегистрироваться
3. Обновите страницу
Вместо этого блока появится ссылка для скачивания материалов.
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель — помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Подписывайтесь на нас в соц.сетях: