Skip to main content

Макросы VBA 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. Макросы будут работать в любой книге, пока открыт файл, где они хранятся.

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

One thought to “Макросы VBA Excel для замены формул на значения”

  1. Sub Заменитель() If da = vbOK Then MsgBox “Формулы превращались в значение”, vbInformation, “Заменитель” For Each Cell In Selection Cell.Formula = Cell.Value Next Cell Else MsgBox “Формулы не изменены” End If End Sub

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

Ваш e-mail не будет опубликован.