Страницы: 1
RSS
Макрос для удаления значений в строке или диапазоне по значению одной ячейки
 
Добрый день, прошу помочь с написанием макроса, который бы очистил строки или диапазоны при следующих условиях:
1) В столбцах E или H есть слово "выкуп" или "отмена" (выделены желтым цветом) - очистить выделенные ячейки
2) В столбцах E или H есть слово "стоп" (выделены красным цветом) - саму строку и выделенный после нее диапазон строк вплоть до начала следующего списка очистить
В самом файле выделения цветом нет, сделал для наглядности. Данные в остальных столбцах закономерностям не подчинены. Всё условие строится на трёх ключевых словах в ячейках.

Справа находится таблица, к формату которой бы хотелось прийти после проведения необходимых манипуляций. Все данные находятся в диапазоне A1:H650. Заранее спасибо
Изменено: ser11241 - 16.08.2019 13:17:25
 
Цитата
ser11241 написал:
очистил строки или диапазоны
Под словом очистил понимается удаление строк или удаление данных из ячеек в этих строках?
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Alemox, возможно некорректно сформулировал, имел ввиду удаление данных из этих ячеек
 
Во вложении файл. Очистка закоментирована. Выделяет цветом. Если нужна очистка просто раскомменитруйте строчку .ClearContents
Код
Option Explicit
Option Compare Text

Sub Analiz()
Dim i&
Dim n As Boolean
n = False
With Лист1
    For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
        If .Cells(i, 5) = "выкуп" Then
            With .Range(.Cells(i, 2), .Cells(i, 8))
                '.ClearContents
                .Interior.ColorIndex = 44
            End With
        End If
        If .Cells(i, 8) = "отмена" Then
            With .Range(.Cells(i, 2), .Cells(i, 8))
                '.ClearContents
                .Interior.ColorIndex = 6
            End With
        End If
        If n = False Then If .Cells(i, 5) = "стоп" Or .Cells(i, 8) = "стоп" Then n = True
        If n = True And InStr(1, .Cells(i, 9), "Список", vbTextCompare) = 0 Then
            With .Range(.Cells(i, 2), .Cells(i, 8))
                '.ClearContents
                .Interior.ColorIndex = 3
            End With
        Else
            n = False
        End If
    Next i
End With
End Sub
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Alemox, все отлично работает, выручили, спасибо огромное!
Страницы: 1
Наверх