使用通配符替换文本
问题描述:
我有一个包含千行产品详细信息的电子表格。在一列尺寸上,细胞具有这种类型的值:使用通配符替换文本
; XXS(缺货); XS; S(缺货); M(缺货); L; XL;
我需要删除缺货的值,所以我做了Ctrl + F并替换“; *(缺货);”按“;”但是它会将所有内容都替换为下一个分号,而不是第一个分号。
所以
; XXS(缺货); XS; S(缺货); M(缺货),L; XL;
变得
; L,XL;
我如何使用通配符来得到的结果,如:
; XS,L,XL;
答
如果'列大小'是列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)更改起始行。
非常感谢!所以我想只有通配符才有可能。 –