следующий код использует диапазон для удаления строк из листа, мой журнал не нормализуется, поэтому мой вопрос заключается в том, как я могу использовать функцию InStr здесь, чтобы также удалить как значения , т.е. если «Apple Ltd» находится в диапазоне, тогда он удалит строки, содержащие «яблоко» или наоборот ... Возможно ли это?Использование функции InStr для удаления только похожих значений из диапазона
Обновление: Строка 28: Требуется объект @freeman. Я не мог заставить «Dim Cel as Range» работать, я вставил как здесь, так и в верхнюю часть листа с тем же результатом. Является синтаксисом, как вы написали «Cel»? Оригинал ниже
Sub Loop_Example()
Dim ChkRange As Range
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
Set ChkRange = Sheets("Sheet2").Range("A1:A13")
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With Sheet1
.Select
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
.DisplayPageBreaks = False
Firstrow = 2
Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
For Lrow = Lastrow To Firstrow Step -1
With .Cells(Lrow, "A")
If Not IsError(.Value) Then
If Not IsError(Application.Match(.Value, ChkRange, 0)) Then
.EntireRow.Delete
End If
For Each Cell In ChkRange
If InStr(1, Cell.Value, .Value) > 0 And Cell.Value <> .Value Then
'include the 2nd part of the "AND" to ensure you don't delete based
'on a COMPLETE match, only on a partial match as noted in the comments
Cell.EntireRow.Delete
End If
Next
End If
End With
Next Lrow
End With
ActiveWindow.View = ViewMode
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
End Sub
Sub Loop_Example()
Dim ChkRange As Range
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
Set ChkRange = Sheets("Sheet2").Range("A1:A13")
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With Sheet1
.Select
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
.DisplayPageBreaks = False
Firstrow = 2
Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
For Lrow = Lastrow To Firstrow Step -1
With .Cells(Lrow, "A")
If Not IsError(.Value) Then
If Not IsError(Application.Match(.Value, ChkRange, 0)) Then
.EntireRow.Delete
End If
For Each Cell In ChkRange
Dim Cel As Range
If InStr(1, Cell.Value, .Value) > 0 And Cell.Value <> .Value Then
'include the 2nd part of the "AND" to ensure you don't delete based
'on a COMPLETE match, only on a partial match as noted in the comments
Cell.EntireRow.Delete
End If
Next
End If
End With
Next Lrow
End With
ActiveWindow.View = ViewMode
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
End Sub
ли счетчик ананас, как, как для Apple, Ltd? – pnuts
Если все значение существует в пределах другой строки, я бы не хотел, чтобы макрос удалял его, так как это удаляло бы множество значений. –
Итак, либо в начале, либо за пробелом (или пунктуацией?) Или перед пробелом и в конце (или следует только пунктуацией)? А насчет '' '' '' '' '' '' '' '' '' '. – pnuts