#excel #vba #find
#excel #vba #Найти
Вопрос:
Мне было интересно, есть ли способ выполнить эту задачу. У меня есть столбцы A и B. Столбец A1 содержит текстовое значение «Общая служба». Столбец B1 содержит текстовое значение «Общий».
Что я хочу сделать, так это удалить «общую» часть «Общего сервиса», чтобы все, что осталось, это «Сервис». Однако мне нужно сделать это для многих разных значений в столбце A / B.
Есть ли какой-нибудь простой способ автоматизировать это? По сути, это просто массовый поиск и замена пустым значением, оно просто должно основываться на значениях в столбце B.
Обновить:
Спасибо за ответы, но эти решения предполагают, что столбцы выстраиваются в ряд из стороны в сторону. Чтобы уточнить, мне нужно найти ВСЕ значения в столбце B и удалить их ВСЕ из столбца A. Таким образом, строка «из ндс» станет «из» в этом примере (она находит значение «ндс» из столбца B и удаляет его из A). Это должно быть сделано с 1000 разных значений.
Заранее спасибо за любую предоставленную помощь.
Комментарии:
1. Формула —
=TRIM(SUSTITUTE(A1,B1,""))
2. Да, есть много способов сделать это. Если у вас уже есть код, опубликуйте его. Если нет, то запись макросов — хорошее начало.
3. vba —
[A:A] = [INDEX(TRIM(SUBSTITUTE(A:A,B:B,"")),)]
4. Спасибо за помощь, но мои значения столбцов не будут совпадать (см. Обновление).
5. У вас есть служба и центр, так что A3 ничего не будет?
Ответ №1:
Я могу ошибаться, но похоже, вам может понадобиться коллекция. Я вижу что-то вроде этого в качестве отправной точки:
Sub RemoveWords(DeleteFromCol As Range, FindCol As Range)
Dim words As New Collection
Dim r As Range
Dim word As Variant
For Each r In FindCol
words.Add (r.Value2)
Next r
For Each r In DeleteFromCol
For Each word In words
r.Value2 = Replace(r.Value2, word, "")
Next word
Next r
End Sub
И затем вы можете вызвать его с помощью произвольных диапазонов в вашем примере:
RemoveWords Range("A1:A11"), Range("B1:B8")
Я предполагаю, что это может быть не 100%, как в вашем примере, в некоторых случаях я бы удалил оба слова, поскольку они существуют в списке «одно слово». Вы можете справиться с этим, как хотите.