Уважаемые коллеги, прошу помочь с решением вопроса. Есть ощущение, что её можно решить только макросом. Суть проблемы: Есть некая формула, которая раскидана по всему файлу(тысячи ячеек с ней). Формула громоздкая, поэтому при автоматическом вычислении файл зависает на минуту. Каким образом можно заменить формулу на имеющиеся её значения с учетом того, что к формуле уже прибавлены или отняты другие числа? Запрос похож на специальную вставку, но в данном случае диапазоны не связаны. В файле с примером желтые ячейки должны будут содержать числа(результат формулы), а не саму формулу.
Уважаемые коллеги, прошу помочь с решением вопроса. Есть ощущение, что её можно решить только макросом. Суть проблемы: Есть некая формула, которая раскидана по всему файлу(тысячи ячеек с ней). Формула громоздкая, поэтому при автоматическом вычислении файл зависает на минуту. Каким образом можно заменить формулу на имеющиеся её значения с учетом того, что к формуле уже прибавлены или отняты другие числа? Запрос похож на специальную вставку, но в данном случае диапазоны не связаны. В файле с примером желтые ячейки должны будут содержать числа(результат формулы), а не саму формулу.Ktulu
Ну, например, для выделенного на листе диапазона можно так: [vba]
Код
Sub Replace_by_VAL() ' в выбранном диапазоне в не скрытых ячейках заменить формулы на значения 'http://www.excelworld.ru/forum/3-45-68810-16-1383818995 Dim rRng As Range, rAr As Range On Error Resume Next With ActiveWindow.RangeSelection.Cells If .Count = 1 Or .MergeCells Then ' если выбрана всего одна ячейка, то SpecialCells выберет все на листе, соответствующие условию .Item(1) = .Item(1).Value: Exit Sub Else ' если выбрано несколько ячеек, то SpecialCells выберет только нужные Set rRng = .SpecialCells(xlCellTypeFormulas).SpecialCells(xlCellTypeVisible) End If End With If rRng Is Nothing Then Exit Sub For Each rAr In rRng.Areas: rAr.Value = rAr.Value: Next rRng.Select ' это просто для наглядности - выделить обработанные ячейки End Sub
Ну, например, для выделенного на листе диапазона можно так: [vba]
Код
Sub Replace_by_VAL() ' в выбранном диапазоне в не скрытых ячейках заменить формулы на значения 'http://www.excelworld.ru/forum/3-45-68810-16-1383818995 Dim rRng As Range, rAr As Range On Error Resume Next With ActiveWindow.RangeSelection.Cells If .Count = 1 Or .MergeCells Then ' если выбрана всего одна ячейка, то SpecialCells выберет все на листе, соответствующие условию .Item(1) = .Item(1).Value: Exit Sub Else ' если выбрано несколько ячеек, то SpecialCells выберет только нужные Set rRng = .SpecialCells(xlCellTypeFormulas).SpecialCells(xlCellTypeVisible) End If End With If rRng Is Nothing Then Exit Sub For Each rAr In rRng.Areas: rAr.Value = rAr.Value: Next rRng.Select ' это просто для наглядности - выделить обработанные ячейки End Sub
Да уж! Учитывая то, что в первом посте написано: Цитата Ktulu, 18.08.2014 в 04:24, в сообщении № 1 Есть некая формула, которая раскидана по всему файлу(тысячи ячеек) … диапазоны не связаны.
Леш, в свете вышеизложенного, RangeSelection юмор не меньший.
Да уж! Учитывая то, что в первом посте написано: Цитата Ktulu, 18.08.2014 в 04:24, в сообщении № 1 Есть некая формула, которая раскидана по всему файлу(тысячи ячеек) … диапазоны не связаны.
Леш, в свете вышеизложенного, RangeSelection юмор не меньший. RAN