Как удалить все формулы в excel vba

Way 1 (Courtesy @rdhs)

Sub Sample()
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("DTMGIS")

    ws.UsedRange.Value = ws.UsedRange.Value
End Sub

Way 2 Using Copy - PasteSpecial - Values

Sub Sample()
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("DTMGIS")

    With ws.UsedRange
        .Copy
        .PasteSpecial Paste:=xlPasteValues, _
        Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
    End With
End Sub

Way 3 Using SpecialCells

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range

    Set ws = ThisWorkbook.Sheets("DTMGIS")

    On Error Resume Next
    Set rng = ws.Cells.SpecialCells(xlCellTypeFormulas)
    On Error GoTo 0

    If Not rng Is Nothing Then
        rng.Value = rng.Value
    End If
End Sub

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

Добрый день. Ребята я наверное достал вас со своими вопросами, блин ну всегда обращаюсь только по крайней необходимости. Сегодня готовил отчетную ведомость вышло около 2000 строк. После чего мне нужно было удалить автоматически формулы и оставить их значения со всей книги, я воспользовался макросом, который находится в примере, он удалил формулы и оставил их значения, но вот в чем проблема, в формуле по условию получалось значение «3.1», а после выполнения макросом получилось «3,1». Ребята помогите, как быть. Плиззз!!! :)

 

Nic70y

Пользователь

Сообщений: 3289
Регистрация: 22.12.2012

Win7 MSO 2013

Если в ячейках с формулами установить текстовый формат — то работает.
В макросах не понимаю — почему не знаю.

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

В этом то и проблема формул больше 1000

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

Файл не смотрел, но, если у Вас там используется .value — попробуйте .text

 

Serge 007

Гость

#6

25.06.2013 20:03:32

Цитата
Nic70y пишет:
Если в ячейках с формулами установить текстовый формат — то работает.

Ну дык и установим его :)

Код
Sub All_Formulas_To_Values_In_All_Sheets()
    Dim wsSh As Worksheet
    For Each wsSh In Sheets
    wsSh.UsedRange.NumberFormat = "@"
        wsSh.UsedRange.Value = wsSh.UsedRange.Value
    Next wsSh
End Sub
 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

Не подскажите, в чем разница между моим макросом(я его записал макрорекордером), и вашим, чисто из любопытства
Sub Макрос4()
   Sheets(Array(«Лист1», «Лист2», «Лист3»)).Select
   Sheets(«Лист1»).Activate
   Cells.Select
   Selection.Copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Range(«A1»).Select
   ActiveSheet.Paste
   Application.CutCopyMode = False
   Sheets(«Лист1»).Select
   Range(«A1»).Select
End Sub

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

А так огромнейшее спасибо за помощь. Я думал вся моя работа пойдет под хвост.

Изменено: danka25.06.2013 20:13:41

 

Serge 007

Гость

#9

25.06.2013 20:21:29

Цитата
danka пишет:
в чем разница между моим макросом(я его записал макрорекордером), и вашим

Нет никакого «моего» макроса, я взял его из Вашего файла и немного подкорректировал :)

Разница — во всём. Это два совершенно разных макроса. Что именно Вы хотите услышать в ответ на Ваш вопрос?

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

Каким лучше пользоваться, какой быстрее.

 

Лучше, быстрее, универсальнее и правильнее All_Formulas_To_Values_In_All_Sheets

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

Всё спасибо, значит буду пользоваться ей.

 

Serge 007

Гость

#13

25.06.2013 20:42:27

Цитата
danka пишет:
буду пользоваться ей

Надеюсь «ей» — это процедурой, а не макросом?  :D

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

Будем надеится :D

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

Испытал макрос, работает отлично. Но теперь возникла другая проблема. В рассчетах цифры получались например 82,6, а после выполнения макросом 82,5588001734408.

 
 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

Вручную, их слишком много. А макросом незнаю как,наверно никак.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#18

25.06.2013 21:09:50

Не могу не отметить тот факт, что коды взяты с моего сайта :-)

Чтобы округлить сначала определитесь, что важнее — точное совпадение вычислений на листе или округление. Ведь если тупо округлить значения, то какие-то ячейки, участвующие ранее в вычислениях будут давать неверный результат.
Лучше просто примените формат к ячейкам и до, и после:

Цитата
Sub All_Formulas_To_Values_In_All_Sheets()
   Dim wsSh As Worksheet
   For Each wsSh In Sheets
       wsSh.UsedRange.NumberFormat = «@»
       wsSh.UsedRange.Value = wsSh.UsedRange.Value
       wsSh.UsedRange.NumberFormat = «0.00»
   Next wsSh
End Sub

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Serge 007

Гость

#19

25.06.2013 21:12:26

Цитата
The_Prist пишет:
основа кода и название процедуры(All_Formulas_To_Values_In_All_Sheets) взяты с моего сайта.

Дим, я из файла ТС брал

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

Хотел как быстрее и лучше сделать работу. Но надобыло на начальной стадии задаться этим вопросом. просто получается у меня выводит формулы значения «формат общий», а какието числовой число десятичных знаков либо 1, либо2. А может мне сделать так, попробывать макрос записанный макрорекордером, он у меня выводит значения, а потом воспользоваться вашим макросом не много переделанным Serge 007.

 

Михаил С.

Пользователь

Сообщений: 10514
Регистрация: 21.12.2012

#21

25.06.2013 21:26:10

Цитата
danka пишет:
В рассчетах цифры получались например 82,6, а после выполнения макросом 82,5588001734408.

Попробуйте добавить в макрос две строчки:

Код
ActiveWorkbook.PrecisionAsDisplayed = True

в насчале макроса и

Код
ActiveWorkbook.PrecisionAsDisplayed = False

в конце. Может сработает.

 

The_Prist

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#22

25.06.2013 22:02:40

Цитата
Serge 007 пишет:
Дим, я из файла ТС брал

Так я ничего против-то не имею ни к ТС, ни тем более к тебе. Так, отметил мимоходом(уж слишком подозрительно знакомый код увидел просто) :-)

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

#23

25.06.2013 22:06:48

Кому интересно. Вообщем, нашел решение, записал макрос (выделил все листы в книги кнопкой shift, выделил весь лист1, соответственно выделились так же другие листы, копировать, спец. вставка вставить зачения, убрал выделение с листов, остановил запись. И вот, что получилось:

Код
Sub Макрос1()
 Range("A1").Select
 Sheets(Array("Лист1", "Лист2", "Лист3")).Select
 Sheets("Лист1").Activate
 Cells.Select
 Selection.Copy
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Range("A1").Select
 Application.CutCopyMode = False
 ActiveCell.FormulaR1C1 = ""
 Range("A1") .Select
 Sheets("Лист1") .Select
End Sub

Вроде работает.

 

danka

Пользователь

Сообщений: 67
Регистрация: 16.06.2013

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

Изменено: danka25.06.2013 22:10:46

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#25

25.06.2013 22:37:11

Есть прИдложение: в сообщении оформляйте код соответствующим тэгом (кнопочка над полем для сообщения)

Хитрости »

12 Май 2011              364009 просмотров


Как удалить в ячейке формулу, оставив значения?

Иногда формула в ячейке нужна лишь на короткое время — только для получения результата. А затем уже не нужна ни сама формула, ни ячейки, на которые она ссылается. Но вот беда — если удалить ячейки, то формула «ломается», как это говорится. Т.е. в ячейке получается либо #ЗНАЧ! либо #ССЫЛКА!. Или Вам надо просто зафиксировать значение, полученное в результате работы формулы. Т.е. чтобы формулы там не было, а было только значение. Как ни странно, но делается это проще простого:

Выделяете ячейку/несколько ячеек с формуламиКопируетеПравая кнопка мышиСпециальная вставкаЗначения

Специальная вставка

Вот и все. Больше формул нет.
Так же подобное можно сделать при помощи кода VBA:

Sub Formulas_To_Values()
    Selection.Value = Selection.Value
End Sub

Для использования кода переходим в редактор VBA(Alt+F11) —InsertModule и вставляем приведенный код. Чтобы выполнить код надо на листе нажать сочетание клавиш Alt+F8, выбрать нужный код и нажать Выполнить
Данный код заменяет формулы в выделенном диапазоне на значения. Только необходимо учитывать, что выделенный диапазон должен быть неразрывным. Иначе код выдаст ошибку. А такой код

Sub All_Formulas_To_Values()
    ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
End Sub

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

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

Sub All_Formulas_To_Values_In_All_Sheets()
    Dim wsSh As Worksheet
    For Each wsSh In Sheets
        wsSh.UsedRange.Value = wsSh.UsedRange.Value
    Next wsSh
End Sub

А этот код поможет заменить формулы на значения только в видимых ячейках(просматриваются выделенные ячейки):

Sub All_Formulas_To_Values_OnlyVisible()
    Dim rRng As Range, rArea As Range
    If Selection.Count = 1 Then
        Set rRng = ActiveCell
    Else
        Set rRng = Selection.SpecialCells(12)
    End If
    For Each rArea In rRng.Areas
        rArea.Value = rArea.Value
    Next rArea
End Sub

КАК БЫСТРО ВЫЗЫВАТЬ:
Вообще данную команду можно вывести на Быструю панель и использовать в одно нажатие тогда, когда нужно.

  • 2010 Excel ФайлПараметрыНастройка. Выбрать команды из: Все команды. Находите команду Вставить значения и добавляете;
  • 2007 Excel МенюПараметры ExcelНастройка. Выбрать команды из: Все команды. Находите команду Вставить значения и добавляете;
  • 2003 Excel: СервисНастройка— вкладка Команды— категория ПравкаВставить значения.

Теперь у Вас появится значок на Быстрой панели.

ДОБАВИТЬ В КОНТЕКСТНОЕ МЕНЮ ЯЧЕЕК:
Если один раз выполнить код:

Sub Add_PasteSpecials()
    Dim cbb
    Set cbb = Application.CommandBars("Cell").FindControl(ID:=370)
    If Not cbb Is Nothing Then cbb.Delete 'удаляем пункт, если он был уже добавлен ранее
    Application.CommandBars("Cell").Controls.Add ID:=370, before:=4
End Sub

то в контекстном меню мыши появится команда — «Вставить значения». Она полностью дублирует стандартную, только вызвать её быстрее — одно нажатие и все.

Также см.:
Вставить значения
Формулы перестали считать — как исправить?


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

Удалить формулы на любом листе.

Mark1976

Дата: Вторник, 15.12.2020, 21:45 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 685


Репутация:

3

±

Замечаний:
0% ±


Excel 2010, 2013

Здравствуйте. Есть макрос [vba]

Код

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

[/vba]
Данный макрос удаляет формулы в выделенном диапазоне. У меня 4 листа в книге, кнопка на 1 листе. Надо чтобы при выделении формулы на любом листе и запуске макроса с первого листа формулы удалялись на любом листе. Заранее спасибо за решение.

К сообщению приложен файл:

3931878.xls
(82.0 Kb)

 

Ответить

Pelena

Дата: Вторник, 15.12.2020, 21:52 |
Сообщение № 2

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Здравствуйте.
Вынесите кнопку на Панель быстрого доступа


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Mark1976

Дата: Вторник, 15.12.2020, 21:58 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 685


Репутация:

3

±

Замечаний:
0% ±


Excel 2010, 2013

Pelena, ок. А у других пользователей, кто откроет данный файл тоже данная кнопка будет на панели? С файлом будут работать много пользователей.

Сообщение отредактировал Mark1976Вторник, 15.12.2020, 22:03

 

Ответить

Pelena

Дата: Вторник, 15.12.2020, 22:10 |
Сообщение № 4

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

С файлом будут работать много пользователей

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


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Mark1976

Дата: Вторник, 15.12.2020, 22:13 |
Сообщение № 5

Группа: Проверенные

Ранг: Ветеран

Сообщений: 685


Репутация:

3

±

Замечаний:
0% ±


Excel 2010, 2013

Елена, стирать данные надо на этих листах: Приложение Согаз, Приложение Макс-М, Приложение Капитал.

 

Ответить

Pelena

Дата: Вторник, 15.12.2020, 22:17 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

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


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Mark1976

Дата: Вторник, 15.12.2020, 22:19 |
Сообщение № 7

Группа: Проверенные

Ранг: Ветеран

Сообщений: 685


Репутация:

3

±

Замечаний:
0% ±


Excel 2010, 2013

Pelena, получается, что да.

 

Ответить

Mark1976

Дата: Вторник, 15.12.2020, 22:21 |
Сообщение № 8

Группа: Проверенные

Ранг: Ветеран

Сообщений: 685


Репутация:

3

±

Замечаний:
0% ±


Excel 2010, 2013

Pelena, почему такая сложность, так как кнопку на каждом листе надо удалять перед тем как распечатать, так как она тоже печатается.

 

Ответить

Pelena

Дата: Вторник, 15.12.2020, 22:22 |
Сообщение № 9

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

[vba]

Код

Sub Удалить_выделенные_формулы()
‘преобразование формул в значения в выделенном диапазоне(ах)
    Dim smallrng As Range, sh As Worksheet
    Application.ScreenUpdating = False
    For Each sh In Worksheets
        sh.Activate
        For Each smallrng In Selection.Areas
            smallrng.Value = smallrng.Value
        Next smallrng
    Next sh
    Application.ScreenUpdating = True
End Sub

[/vba]


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Mark1976

Дата: Вторник, 15.12.2020, 22:26 |
Сообщение № 10

Группа: Проверенные

Ранг: Ветеран

Сообщений: 685


Репутация:

3

±

Замечаний:
0% ±


Excel 2010, 2013

Спасибо Елена, это то, что надо.

 

Ответить

RAN

Дата: Среда, 16.12.2020, 10:25 |
Сообщение № 11

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

-Как ребенка назвали?
-Маша.
-Хорошее имя, но намучается с ним пацан!

С макросом в варианте из №9 будет аналогично, ибо Selection относится исключительно к активному окну, и совершенно не факт, что выделение совпадет на всех листах. Осмелюсь предположить, что в 99% случаев оно будет различным.


Быть или не быть, вот в чем загвоздка!

 

Ответить

Pelena

Дата: Среда, 16.12.2020, 11:00 |
Сообщение № 12

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Selection относится исключительно к активному окну

Разве sh.Activate для этого недостаточно?


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

RAN

Дата: Среда, 16.12.2020, 13:02 |
Сообщение № 13

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

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

К сообщению приложен файл:

0527016.xlsm
(14.9 Kb)


Быть или не быть, вот в чем загвоздка!

 

Ответить

Pelena

Дата: Среда, 16.12.2020, 15:54 |
Сообщение № 14

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Поглядела.
Там, где есть sh.Activate, отрабатывает, как надо. В остальных случаях работает неверно.
Не пойму, что не так?


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

RAN

Дата: Среда, 16.12.2020, 16:26 |
Сообщение № 15

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

По тому, как сформулирован вопрос, все верно. Но я, почему-то, уверен, что нужно так, как работает третий макрос. ;)
Могу ошибаться, но это не точно.


Быть или не быть, вот в чем загвоздка!

 

Ответить

mgt

Дата: Пятница, 18.12.2020, 12:46 |
Сообщение № 16

Группа: Пользователи

Ранг: Новичок

Сообщений: 45


Репутация:

13

±

Замечаний:
0% ±


Excel 2010

Pelena, почему такая сложность, так как кнопку на каждом листе надо удалять перед тем как распечатать, так как она тоже печатается.

К сообщению приложен файл:

1620669.jpg
(40.5 Kb)

 

Ответить

Serge_007

Дата: Пятница, 18.12.2020, 14:51 |
Сообщение № 17

Группа: Админы

Ранг: Местный житель

Сообщений: 15894


Репутация:

2623

±

Замечаний:
±


Excel 2016

[offtop]

-Как ребенка назвали?
-Маша.
-Хорошее имя, но намучается с ним пацан!


— А ещё, Леонид Аркадьевич, ребенка мы назвали в честь вашей передачи!
— Оооо, интересно, и как же?
— СекторПриз
— Даа-а, не самое лучшее имя для девочки…

:)


ЮMoney:41001419691823 | WMR:126292472390

 

Ответить

  • Удалить формулы и сохранить данные
    • С помощью мыши
    • С помощью клавиатуры (сочетания клавиш)
  • Перевод формул в их текст (без сохранения результирующих значений)
    • В видимых ячейках, пропуская скрытые фильтром
    • Удалить формулы на листе / во всех листах
    • Удаление формул надстройкой !SEMTools

Удалить формулы в Excel можно множеством способов, каждый из которых сильно зависит от поставленной задачи. Как правило, при этом требуется сохранить в ячейках какие-то значения. Вариантов два:

  • это значения, вычисленные этими формулами,
  • сам текст формул.

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

  • Где удалять формулы:
    • в диапазоне,
    • во всем листе,
    • во всей книге.
  • Нужно ли удалять формулы в скрытых/отфильтрованных строках.

Эта статья даст ответы на все вопросы выше.

Удалить формулы и сохранить данные

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

Так вот, чтобы перевести формулы в значения, нужно:

  1. Выделить нужный диапазон ячеек (или одну ячейку, всю строку, столбец или весь лист).
  2. Скопировать выделенное.
  3. Вставить процедурой вставки “как значения”.

Можно сделать это клавишами мыши или клавиатуры — суть процедуры от этого не меняется.

С помощью мыши

Не самый быстрый (так как работает только одна рука), но самый удобный и понятный способ. Выделяем, копируем и в контекстном меню (вызывается нажатием правой кнопки мыши по выделенному диапазону) команду со скриншота:

Команда “Вставить как значения” в командном меню вставки в Excel

С помощью клавиатуры (сочетания клавиш)

Копирование делается в соседний столбец или другую книгу. Я предпочитаю этот способ, хоть он и экономит лишь секунды.

Пошагово:

  1. Выделяем диапазон:
    • мышью, если это столбец, строка или лист,
    • сочетаниями Ctrl + Shift + стрелки или Shift + стрелки, если ячейки или диапазоны ячеек.
  2. Копируем сочетанием Ctrl + C.
  3. Перемещаемся стрелками к диапазону, куда нужно вставить данные, и/или нажимаем Ctrl + Tab для перехода в другую книгу.
  4. Вызываем контекстное меню клавишей на клавиатуре. Иногда ее нет, но обычно на клавиатурах она расположена рядом с правым Alt.
  5. Стрелками перемещаемся к команде (Вниз-вниз-вправо).
  6. Нажимаем Enter.

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

Перевод формул в их текст (без сохранения результирующих значений)

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

Excel — Найти и заменить
Выделяем диапазон формул, жмем Ctrl + H (“эйч”, англ.), чтобы запустить диалоговое окно “Найти и заменить” и в соответствующих окошках вбиваем значения
image
Апостроф в результате замены не будет виден, и формулы будут выглядеть идентично их написанию, однако восприниматься программой будут как текст

В видимых ячейках, пропуская скрытые фильтром

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

Вот код VBA-процедуры, который позволяет обойти проблему:

Sub remFormulas()
    Dim cell As Range
    For Each cell In Selection
        If Not (cell.EntireRow.Hidden = True Or cell.EntireColumn.Hidden = True) Then
            cell.Value2 = cell.Value2
        End If
    Next cell
End Sub

Он отработает на отлично, как и та же процедура надстройки. В синтаксисе кода присутствует проверка ячеек на предмет того, скрыты ли они.

удалить формулы в отфильтрованных строках

Удаляем формулы только в отфильтрованных строках, пропуская скрытые

Удалить формулы на листе / во всех листах

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

Sub удалитьФормулыСоВсегоЛиста()
ActiveSheet.UsedRange.Value2 = ActiveSheet.UsedRange.Value2
End Sub
Sub удалитьФормулыИзВсейКниги()
Dim w As Worksheet
For Each w In Worksheets
  With w.UsedRange
    .Value = .Value
  End With
Next w
End Sub

Ими можно воспользоваться без внедрения в свои файлы, подключив надстройку !SEMTools.

удалить формулы со всего листа

Удаляем формулы со всего листа с !SEMTools

Удаление формул надстройкой !SEMTools

Быструю замену формул на значения в выделенном диапазоне без необходимости копирования и особой вставки я реализовал в своей надстройке для Excel !SEMTools.

Для тех, кто не готов разбираться в VBA, после установки !SEMTools запуск процедуры доступен в два клика из соответствующего меню в группе «УДАЛИТЬ». Функционал относится к бесплатным возможностям !SEMTools (работают без ограничений в любой версии).

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

Удалить формулы и сохранить значения в Excel с !SEMTools

Хотите так же быстро удалять формулы в Excel?
!SEMTools ускорит эту и сотни других задач!

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как удалить все форматы в диапазоне ячеек excel
  • Как удалить все фигуры в word
  • Как удалить все стили ячеек excel
  • Как удалить все фигуры в excel vba
  • Как удалить все ссылки оглавления в word

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии