Версия для слабовидящих
Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

 

= Мир MS Excel/Найти строку по части текста в ячейке - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Найти строку по части текста в ячейке
Паштет Дата: Вторник, 20.08.2024, 13:01 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Есть массив из двух столбцов А и B. В столбце А написан текст типа "яблоки зеленые", "зеленые яблоки", "перец красный" и тп. Необходимо по значению переменной produkt, которая может иметь значение условно просто "яблоки", "перец" и тп., найти столбце А соответствующую строку (не обращая внимание на цвета фруктов) и очистить данные в ячейке в столбце B той же строки.
 
Ответить
СообщениеДобрый день!
Есть массив из двух столбцов А и B. В столбце А написан текст типа "яблоки зеленые", "зеленые яблоки", "перец красный" и тп. Необходимо по значению переменной produkt, которая может иметь значение условно просто "яблоки", "перец" и тп., найти столбце А соответствующую строку (не обращая внимание на цвета фруктов) и очистить данные в ячейке в столбце B той же строки.

Автор - Паштет
Дата добавления - 20.08.2024 в 13:01
i691198 Дата: Вторник, 20.08.2024, 13:41 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 423
Репутация: 131 ±
Замечаний: 0% ±

2016
Паштет, Примерчик бы не помешал. А без него просто советы - пройти циклом по столбцу, использовать логический оператор "Like" или текстовую функцию "Instr". При нахождении нужных значений очищать данные строки используя методы "Clearcontents", Entirerow, "Resize" и т.п.
 
Ответить
СообщениеПаштет, Примерчик бы не помешал. А без него просто советы - пройти циклом по столбцу, использовать логический оператор "Like" или текстовую функцию "Instr". При нахождении нужных значений очищать данные строки используя методы "Clearcontents", Entirerow, "Resize" и т.п.

Автор - i691198
Дата добавления - 20.08.2024 в 13:41
jun Дата: Вторник, 20.08.2024, 13:59 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 43 ±
Замечаний: 0% ±

Паштет, добрый день!
Макрос во вложении. Обязательно нужно выделять не менее 1 столбца, иначе макрос не будет работать.
Выбираем столбец A1:B3, вводим критерий для поиска == яблоки. Результат работы - удаление данных в столбце B, в строке, столбца А которой было найдено совпадение.
Код:

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

К сообщению приложен файл: zamenit_po_podstroke.xlsb (15.9 Kb)


Сообщение отредактировал jun - Вторник, 20.08.2024, 14:12
 
Ответить
СообщениеПаштет, добрый день!
Макрос во вложении. Обязательно нужно выделять не менее 1 столбца, иначе макрос не будет работать.
Выбираем столбец A1:B3, вводим критерий для поиска == яблоки. Результат работы - удаление данных в столбце B, в строке, столбца А которой было найдено совпадение.
Код:
[vba]
Sub replace_substr()Dim arr As Variant, i As Long, pattern As Stringarr = 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 WithEnd Sub
[/vba]

Автор - jun
Дата добавления - 20.08.2024 в 13:59
Паштет Дата: Вторник, 20.08.2024, 14:34 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
Цитата i691198, 20.08.2024 в 13:41, в сообщении № 2 ( писал(а)):
А без него просто советы - пройти циклом по столбцу, использовать логический оператор "Like" или текстовую функцию "Instr".

Вот на этом месте, я затупил. Спасибо за подсказку.

For s = 2 To iLastRow
If Cells(s, 1) Like "*яблоки*" Then Cells(s, 2).Clear
Next s

 
Ответить
Сообщение
Цитата i691198, 20.08.2024 в 13:41, в сообщении № 2 ( писал(а)):
А без него просто советы - пройти циклом по столбцу, использовать логический оператор "Like" или текстовую функцию "Instr".

Вот на этом месте, я затупил. Спасибо за подсказку.

[vba]
For s = 2 To iLastRowIf Cells(s, 1) Like "*яблоки*" Then Cells(s, 2).ClearNext s
[/vba]

Автор - Паштет
Дата добавления - 20.08.2024 в 14:34
Паштет Дата: Вторник, 20.08.2024, 14:36 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
jun, как все сложно. Спасибо, приму к сведению.
 
Ответить
Сообщениеjun, как все сложно. Спасибо, приму к сведению.

Автор - Паштет
Дата добавления - 20.08.2024 в 14:36
i691198 Дата: Вторник, 20.08.2024, 14:49 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 423
Репутация: 131 ±
Замечаний: 0% ±

2016
Тот же результат с функцией "Instr"

If InStr(Cells(s, 1), "яблоки") Then Cells(s, 2).Clear

Нужно учитывать, что метод "Clear" полностью очистит ячейку, включая форматирование. Если нужно удалить только значения, лучше использовать метод "ClearContents".
 
Ответить
СообщениеТот же результат с функцией "Instr"[vba]
If InStr(Cells(s, 1), "яблоки") Then Cells(s, 2).Clear
[/vba] Нужно учитывать, что метод "Clear" полностью очистит ячейку, включая форматирование. Если нужно удалить только значения, лучше использовать метод "ClearContents".

Автор - i691198
Дата добавления - 20.08.2024 в 14:49
Паштет Дата: Вторник, 20.08.2024, 15:20 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 7 ±
Замечаний: 0% ±

Excel 2010
У меня по факту ячейка невидимая, чисто техническая без формата. Но все равно спасибо!
 
Ответить
СообщениеУ меня по факту ячейка невидимая, чисто техническая без формата. Но все равно спасибо!

Автор - Паштет
Дата добавления - 20.08.2024 в 15:20
  • Страница 1 из 1
  • 1
Поиск:

Рейтинг@Mail.ru Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!