Добрый день! Есть массив из двух столбцов А и B. В столбце А написан текст типа "яблоки зеленые", "зеленые яблоки", "перец красный" и тп. Необходимо по значению переменной produkt, которая может иметь значение условно просто "яблоки", "перец" и тп., найти столбце А соответствующую строку (не обращая внимание на цвета фруктов) и очистить данные в ячейке в столбце B той же строки.
Добрый день! Есть массив из двух столбцов А и B. В столбце А написан текст типа "яблоки зеленые", "зеленые яблоки", "перец красный" и тп. Необходимо по значению переменной produkt, которая может иметь значение условно просто "яблоки", "перец" и тп., найти столбце А соответствующую строку (не обращая внимание на цвета фруктов) и очистить данные в ячейке в столбце B той же строки.Паштет
Паштет, Примерчик бы не помешал. А без него просто советы - пройти циклом по столбцу, использовать логический оператор "Like" или текстовую функцию "Instr". При нахождении нужных значений очищать данные строки используя методы "Clearcontents", Entirerow, "Resize" и т.п.
Паштет, Примерчик бы не помешал. А без него просто советы - пройти циклом по столбцу, использовать логический оператор "Like" или текстовую функцию "Instr". При нахождении нужных значений очищать данные строки используя методы "Clearcontents", Entirerow, "Resize" и т.п.i691198
Паштет, добрый день! Макрос во вложении. Обязательно нужно выделять не менее 1 столбца, иначе макрос не будет работать. Выбираем столбец A1:B3, вводим критерий для поиска == яблоки. Результат работы - удаление данных в столбце B, в строке, столбца А которой было найдено совпадение. Код: [vba]
Код
Sub replace_substr() Dim arr As Variant, i As Long, pattern As String
arr = Application.InputBox("выберите диапазон для замены(например А1:B10)", Type:=8) ' заносим диапазон в массив (Type:=8 означает объект-диапазон)
With CreateObject("VBScript.Regexp") ' объект-регулярные выражения
.Global = False: .MultiLine = False: .IgnoreCase = False .pattern = Application.InputBox("введите слово для поиска и замены", Type:=2) ' спрашиваем строку для поиска в столбце A (Type:=2 означает объект-строку)
For i = LBound(arr, 1) To UBound(arr, 1) ' проходим циклом по массиву и если совпадение надено, то If .test(arr(i, 1)) Then ActiveSheet.Cells(i, 2).ClearContents ' очищаем ячейку в столбце B Next i
End With End Sub
[/vba]
Паштет, добрый день! Макрос во вложении. Обязательно нужно выделять не менее 1 столбца, иначе макрос не будет работать. Выбираем столбец A1:B3, вводим критерий для поиска == яблоки. Результат работы - удаление данных в столбце B, в строке, столбца А которой было найдено совпадение. Код: [vba]
Код
Sub replace_substr() Dim arr As Variant, i As Long, pattern As String
arr = Application.InputBox("выберите диапазон для замены(например А1:B10)", Type:=8) ' заносим диапазон в массив (Type:=8 означает объект-диапазон)
With CreateObject("VBScript.Regexp") ' объект-регулярные выражения
.Global = False: .MultiLine = False: .IgnoreCase = False .pattern = Application.InputBox("введите слово для поиска и замены", Type:=2) ' спрашиваем строку для поиска в столбце A (Type:=2 означает объект-строку)
For i = LBound(arr, 1) To UBound(arr, 1) ' проходим циклом по массиву и если совпадение надено, то If .test(arr(i, 1)) Then ActiveSheet.Cells(i, 2).ClearContents ' очищаем ячейку в столбце B Next i
If InStr(Cells(s, 1), "яблоки") Then Cells(s, 2).Clear
[/vba] Нужно учитывать, что метод "Clear" полностью очистит ячейку, включая форматирование. Если нужно удалить только значения, лучше использовать метод "ClearContents".
Тот же результат с функцией "Instr"[vba]
Код
If InStr(Cells(s, 1), "яблоки") Then Cells(s, 2).Clear
[/vba] Нужно учитывать, что метод "Clear" полностью очистит ячейку, включая форматирование. Если нужно удалить только значения, лучше использовать метод "ClearContents".i691198