Помогите написать код для очистки ячеек в столбце, где кол-во слов больше 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