Страницы: 1
RSS
Данные, Копирование данных из середины листа в начало
 
Для удаления строк на основе условия для большого объема данных в Excel с помощью VBA, рекомендуется использовать фильтрацию данных и удаление видимых строк. Это может значительно повысить производительность по сравнению с удалением строк одну за другой.

Ниже приведен пример макроса, который найдет все ячейки в столбце F, не содержащие "ВЭС", и удалит соответствующие строки, используя фильтрацию данных:


```vba
Sub УдалитьСтрокиБезВЭС()
   Dim ws As Worksheet
   Dim lastRow As Long
   Dim rng As Range
   
   ' Укажите имя листа, на котором находятся данные
   Set ws = ThisWorkbook.Worksheets("Название_листа")
   
   With ws
       ' Определяем последнюю заполненную строку в столбце F
       lastRow = .Cells(.Rows.Count, "F").End(xlUp).Row
       
       ' Устанавливаем диапазон, содержащий данные в столбце F
       Set rng = .Range("F1:F" & lastRow)
       
       ' Применяем фильтр по условию
       rng.AutoFilter Field:=1, Criteria1:="<>ВЭС"
       
       ' Проверяем, найдены ли строки, не содержащие "ВЭС"
       If Application.WorksheetFunction.Subtotal(103, rng) > 1 Then
           ' Удаляем видимые строки кроме заголовка
           .AutoFilter.Range.Offset(1).Resize(rng.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
       End If
       
       ' Отключаем фильтр
       .AutoFilterMode = False
   End With
End Sub
```


Укажите "Название_листа" для переменной `ws`, чтобы указать имя листа с данными. Затем запустите макрос `УдалитьСтрокиБезВЭС`, который применит фильтр по условию и удалит строки, которые не содержат "ВЭС" в столбце F.


Этот подход исключает необходимость проходить по каждой строке по одной, и удаление происходит только один раз после применения фильтра. Это значительно улучшает производительность при обработке большого объема данных.
Изменено: Deriel - 30.08.2023 06:19:20
 
Для перевода всех ячеек в столбце C в числовой формат в Excel с помощью VBA для большого объема данных вы можете использовать следующий код:

```vba
Sub ПреобразованиеВЧисловойФормат()
   Dim ws As Worksheet
   Dim lastRow As Long
   Dim rng As Range
   
   ' Укажите имя листа, на котором находятся данные
   Set ws = ThisWorkbook.Worksheets("Название_листа")
   
   ' Определяем последнюю заполненную строку в столбце C
   lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
   
   ' Устанавливаем диапазон, содержащий данные в столбце C
   Set rng = ws.Range("C1:C" & lastRow)
   
   ' Применяем числовой формат ко всем ячейкам в диапазоне
   rng.NumberFormat = "General"
   rng.Value = rng.Value
End Sub
```


Укажите "Название_листа" для переменной `ws` в соответствии с вашим листом данных. Затем запустите макрос. Он применит числовой формат ко всем ячейкам в столбце C, преобразуя их в числовой формат.


Обратите внимание, что применение числового формата ко всем ячейкам в большом объеме данных может занять некоторое время. Рекомендуется сначала создать резервную копию данных, прежде чем выполнять этот макрос.
Изменено: Deriel - 30.08.2023 10:09:19
 
Deriel,  из названия темы должна быть понятна задача, а из названия "Данные" это можно понять? Переформулируйте и предложите новое - модераторы поменяют.
И где в сообщение описание задачи/проблемы?
И код следует оформлять соответствующим тегом: ищите кнопку <...> и исправьте свои сообщения.
Также не помешает небольшой файл-пример.
Страницы: 1
Наверх