2015-09-27 4 views
0

У меня есть таблица с тысячами рядов деталей продукта. На столбце размеров ячейки имеют этот тип значения:Заменить текст с помощью подстановочных знаков

; XXS (отсутствует); XS; S (отсутствует), M (отсутствует); L; XL;

Мне нужно удалить значения, отсутствующие на складе, поэтому я делаю Ctrl + F и заменяю «; * (нет на складе)»; от ";" но затем он заменяет все не на следующую полуточку, а на первую полуколону.

Так

; XXS (нет в наличии), XS, S (нет в наличии); М (нет в наличии); L; XL;

становится

, L; XL;

Как я могу использовать подстановочные знаки, чтобы получить результат, такие как:

, XS, L, XL;

ответ

0

Если ваш столбец размеров - это столбец А с данными, начинающимися в строке 2, запустите эту процедуру.

Sub del_Out_of_Stock() 
    Dim rw As Long, str As String, str2 As String, v As Long, vSZs As Variant 

    str = "(out of stock)" 
    With Worksheets("Sheet1") 
     For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row 
      With .Cells(rw, 1) 
       vSZs = Split(.Value2, Chr(59)) 
       For v = LBound(vSZs) To UBound(vSZs) 
        If CBool(InStr(1, vSZs(v), str, vbTextCompare)) Then _ 
         vSZs(v) = vbNullString 
       Next v 
       str2 = Join(vSZs, Chr(59)) 
       Do While CBool(InStr(1, str2, Chr(59) & Chr(59))): str2 = Replace(str2, Chr(59) & Chr(59), Chr(59)): Loop 
       .Value = str2 
      End With 
     Next rw 
    End With 
End Sub 

Вы, вероятно, придется а) изменить название рабочего листа, б) изменить номер индекса столбца и, возможно, с) изменить начальную строку.

+0

Большое спасибо! Поэтому я предполагаю, что это невозможно с помощью подстановочных знаков. –

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