Excel VBA: Очистка ячеек по условию с помощью макроса.

Автор Rustam, 24 сентября 2018, 10:28

Rustam

Помогите написать код для очистки ячеек в столбце, где кол-во слов больше 7.

Столбец D
шкаф трехдверный распашной (нужно оставить)
купить шкаф трехдверный распашной в интернет магазине недорого (здесь больше 7 слов, нужно эту строку очистить)
шкаф трехдверный распашной купить (нужно оставить)

Как видите нужно очистить только те ячейки, где больше 7 слов, а где меньше их нужно оставить.

Администратор

Макрос предполагает, что первая строка на листе это шапка таблицы, а данные начинаются со строки 2.

Это вставьте в самый верх модуля:
Option Explicit
Option Base 1
Option Compare Text

Это макрос
Sub макрос()

    Dim arr(), lr As Long, i As Long
   
   
    '1. Поиск последней строки в столбце D.
    ' End не ищет в скрытых строках.
    lr = Cells(Rows.Count, "D").End(xlUp).Row
   
    '2. Копирование столбца D в массив. С массивом макрос быстрее работает,
        ' чем с эксель-ячейками.
    If lr = 2 Then
        ReDim arr(1, 1): arr(1, 1) = Range("D2").Value
    Else
        arr() = Range("D2:D" & lr).Value
    End If
   
    '3. Очистка ячеек по условию.
    For i = 1 To UBound(arr)
        ' Split создаёт массив, в котором порядковый номер первого элемента 0.
            ' Поэтому UBound вернёт 6, а не 7.
        If UBound(Split(arr(i, 1), " ")) > 6 Then
            arr(i, 1) = Empty
        End If
    Next i
   
    '4. Вставка изменённого массива обратно на лист.
    Range("D2").Resize(UBound(arr)).Value = arr()
   
    '5. Сообщение.
    MsgBox "Готово.", vbInformation

End Sub
[свернуть]

Rustam