2015-09-27 83 views
0

我有一个包含千行产品详细信息的电子表格。在一列尺寸上,细胞具有这种类型的值:使用通配符替换文本

; XXS(缺货); XS; S(缺货); M(缺货); L; XL;

我需要删除缺货的值,所以我做了Ctrl + F并替换“; *(缺货);”按“;”但是它会将所有内容都替换为下一个分号,而不是第一个分号。

所以

; XXS(缺货); XS; S(缺货); M(缺货),L; XL;

变得

; L,XL;

我如何使用通配符来得到的结果,如:

; XS,L,XL;

回答

0

如果'列大小'是列A,数据从第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 

您可能需要a)更改工作表名称,b)更改列索引号并可能c)更改起始行。

+0

非常感谢!所以我想只有通配符才有可能。 –