2015-07-08 4 views
1

У меня есть текст в диапазоне ячеек, какУдаление конкретной строки из ячейки

Производитель # || # Coaster # | # | Ширина (из стороны в сторону) # || # 20" W #### Высота (внизу) # || # 35 "H # | # | Глубина (спереди назад) # || # 20.5" D #### Глубина сиденья # || # 14.25 "** # | # | Материал & Закончить # ### ** Состав # || # Вуд-виниры & Твердые тела # | # | Состав # || # Металл # | # | Элементы стиля #### Стиль # || # Современный # | # | Стиль # || # Казуальный

Из этой ячейки мне нужно удалить строки между # | # | "needtoremove" ####, не затрагивая другие строки. Я попытался найти и заменить, найдя # | # | * #### и заменив его на # | # |. Однако это не дает точного результата.

Может ли кто-нибудь мне помочь?

+0

Если вы публикуете информацию о том, что вы пробовали, у вас больше шансов, что кто-то поможет вам исправить это, в отличие от того, чтобы оно было написано для вас. – FreeMan

+0

Есть так много '# | # |' и '####' Какие значения вы ищете? –

+0

i Следует удалить все строки между # | # | и ####, но не между # | # | и # | # | и #### – Linga

ответ

0

Нечто подобное.

Если это значение находится в ячейке A1

Dim str As String 
Dim i As Integer 
Dim i2 As Integer 
Dim ws As Excel.Worksheet 

Set ws = Application.ActiveSheet 

str = ws.Range("A1").Value 
i = InStr(str, "#|#|") 
i2 = InStr(str, "####") 

str = Left(str, i) & Right(str, Len(str) - i2) 

ws.Range("A1").Value = str 
+0

Привет @MathewD ничего не шепчет при запуске вышеуказанного кода. – Linga

+0

Я добавил строку внизу, чтобы записать измененную строку в переменной обратно в электронную таблицу. Как сказано, это просто модифицирует ячейку A1. Если вам нужен пример цикла, я могу его предоставить. – MatthewD

+0

Sry его не работает :( – Linga

1

Другим решением будет удалить все между первым # | # | и ####, событие # || # и т. д.

Если вам нужно только удалить текст между # | # | и ####, только если нет другого ## || inbetween, я думаю, что самый простой способ - использовать регулярное выражение.

Вам понадобится активировать библиотеку Microsoft VBScript Regular Expressions 5.5 в Инструменты-> Ссылки из редактора VBA.

Изменить диапазон («D166»), где бы ни находилась ваша ячейка. Выражение как это прямо сейчас («# \ | # \ | [A-Za-z0-9 &] * ####») соответствует любому тексту, который начинается с # | # |, заканчивается на #### и имеет любое количество буквенно-цифровых символов, & или пробел. При необходимости вы можете добавить другие символы между командами.

Sub remove() 
Dim reg As New RegExp 
Dim pattern As String 
Dim replace As String 
Dim strInput As String 
strInput = Range("D166").Value 
replace = "" 
pattern = "#\|#\|[A-Za-z0-9& ]*####" 
With reg 
    .Global = True 
    .MultiLine = True 
    .IgnoreCase = False 
    .pattern = pattern 
End With 


If reg.test(strInput) Then Range("D166").Value = reg.replace(strInput, replace) 

End Sub 
+0

У меня ошибка на «Dim reg As New RegExp», я должен делать? – Linga

+1

Добавили ли вы ссылку на регулярные выражения Microsoft VBScript 5.5? Вот шаг за шагом по этому поводу: http://stackoverflow.com/a/22542835/5042442 Вам нужно всего лишь сделать шаг 1 шага. – Latch

+0

Sry Я знаю только на английском языке, эта ссылка имеет другой язык – Linga

Смежные вопросы