Страницы: 1
RSS
Макрос на удаление формул
 
Добрый день. Ребята я наверное достал вас со своими вопросами, блин ну всегда обращаюсь только по крайней необходимости. Сегодня готовил отчетную ведомость вышло около 2000 строк. После чего мне нужно было удалить автоматически формулы и оставить их значения со всей книги, я воспользовался макросом, который находится в примере, он удалил формулы и оставил их значения, но вот в чем проблема, в формуле по условию получалось значение "3.1", а после выполнения макросом получилось "3,1". Ребята помогите, как быть. Плиззз!!! :)
 
Если в ячейках с формулами установить текстовый формат - то работает.
В макросах не понимаю - почему не знаю.
 
В этом то и проблема формул больше 1000
 
Ну хоть кто-нибудь
 
Файл не смотрел, но, если у Вас там используется .value - попробуйте .text
 
Цитата
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
 
Не подскажите, в чем разница между моим макросом(я его записал макрорекордером), и вашим, чисто из любопытства
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 - 25.06.2013 20:13:41
 
Цитата
danka пишет:
в чем разница между моим макросом(я его записал макрорекордером), и вашим
Нет никакого "моего" макроса, я взял его из Вашего файла и немного подкорректировал :)

Разница - во всём. Это два совершенно разных макроса. Что именно Вы хотите услышать в ответ на Ваш вопрос?
 
Каким лучше пользоваться, какой быстрее.
 
Лучше, быстрее, универсальнее и правильнее All_Formulas_To_Values_In_All_Sheets
 
Всё спасибо, значит буду пользоваться ей.
 
Цитата
danka пишет:
буду пользоваться ей
Надеюсь "ей" - это процедурой, а не макросом?  :D
 
Будем надеится :D
 
Испытал макрос, работает отлично. Но теперь возникла другая проблема. В рассчетах цифры получались например 82,6, а после выполнения макросом 82,5588001734408.
 
Ну округлите их
 
Вручную, их слишком много. А макросом незнаю как,наверно никак.
 
Не могу не отметить тот факт, что коды взяты с моего сайта :-)

Чтобы округлить сначала определитесь, что важнее - точное совпадение вычислений на листе или округление. Ведь если тупо округлить значения, то какие-то ячейки, участвующие ранее в вычислениях будут давать неверный результат.
Лучше просто примените формат к ячейкам и до, и после:
Цитата
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
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist пишет:
основа кода и название процедуры(All_Formulas_To_Values_In_All_Sheets) взяты с моего сайта.
Дим, я из файла ТС брал
 
Хотел как быстрее и лучше сделать работу. Но надобыло на начальной стадии задаться этим вопросом. просто получается у меня выводит формулы значения "формат общий", а какието числовой число десятичных знаков либо 1, либо2. А может мне сделать так, попробывать макрос записанный макрорекордером, он у меня выводит значения, а потом воспользоваться вашим макросом не много переделанным Serge 007.
 
Цитата
danka пишет:
В рассчетах цифры получались например 82,6, а после выполнения макросом 82,5588001734408.
Попробуйте добавить в макрос две строчки:
Код
ActiveWorkbook.PrecisionAsDisplayed = True
в насчале макроса и
Код
ActiveWorkbook.PrecisionAsDisplayed = False
в конце. Может сработает.
 
Цитата
Serge 007 пишет:
Дим, я из файла ТС брал
Так я ничего против-то не имею ни к ТС, ни тем более к тебе. Так, отметил мимоходом(уж слишком подозрительно знакомый код увидел просто) :-)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Кому интересно. Вообщем, нашел решение, записал макрос (выделил все листы в книги кнопкой 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 - 25.06.2013 22:10:46
 
Есть прИдложение: в сообщении оформляйте код соответствующим тэгом (кнопочка над полем для сообщения)
Страницы: 1
Наверх