Задача такая - Есть фирмы и менеджеры которые с ними работали(2 столбца). Необходимо удалить все фирмы из списка если они работали с конкретными менеджерами. Я представляю логику программы но ни черта не понимаю в синтаксисе, помогите накатить код.
Код
Dim a As Variant a = Range("A1:B20000") Е1 и Е2 менеджеры For k=1 to maxdlin do
if a[k,2] = E1 or a[k,2] = Е2 then
Удалить все строки из таблицы если со значением a[k,1];
Private Sub CommandButton1_Click() Application.ScreenUpdating = False Application.CutCopyMode = False Application.DisplayAlerts = False Dim krit1 As String Dim krit2 As String Dim LatRow As Long Dim ii As Long krit1 = Range("E1").Value krit2 = Range("E2").Value LatRow = Cells(Rows.Count, 1).End(xlUp).Row For ii = LatRow To 1 Step -1 If Cells(ii, 2) = krit1 Or Cells(ii, 2) = krit2 Then Range(Cells(ii, 1), Cells(ii, 2)).Delete Shift:=xlUp End If Next Application.ScreenUpdating = True Application.CutCopyMode = True Application.DisplayAlerts = True End Sub
For ii = LatRow To 1 Step -1 If Cells(ii, 2) = krit1 Or Cells(ii, 2) = krit2 Then Range(Cells(ii, 1), Cells(ii, 2)).Delete Shift:=xlUp End If Next
Все работает, с небольшими неточностями, удаляет конкретно строки где работал ненужный менеджер, а необходимо удалить целиком фирму если ненужный менеджер с ней работал. Твой код очень помог, я думаю перед удалением строки нужно вставить цикл где он проверит весь список и удалит по условию. Еще раз спасибо, очень помог, я думаю я справлюсь)
Private Sub CommandButton1_Click() Application.ScreenUpdating = False Application.CutCopyMode = False Application.DisplayAlerts = False Dim krit1 As String Dim krit2 As String Dim krit3 As String Dim LatRow As Long Dim LatRow1 As Long Dim ii As Long krit1 = Range("E1").Value krit2 = Range("E2").Value
LatRow = Cells(Rows.Count, 1).End(xlUp).Row For ii = LatRow To 1 Step -1 If Cells(ii, 2) = krit1 Or Cells(ii, 2) = krit2 Then LatRow1 = Cells(Rows.Count, 1).End(xlUp).Row krit3 = Cells(ii, 1).Value Range("$A$1:$B$" & LatRow).AutoFilter Field:=1, Criteria1:= _ krit3 LatRow1 = Cells(Rows.Count, 1).End(xlUp).Row With Range("A2:A" & LatRow1) .SpecialCells(xlCellTypeVisible).Select .ClearContents .Range("$A$1:$B$" & LatRow).AutoFilter Field:=1 End With Range(Cells(ii, 1), Cells(ii, 2)).Delete Shift:=xlUp End If Next Application.ScreenUpdating = True Application.CutCopyMode = True Application.DisplayAlerts = True End Sub