我有地毯名称,我正在尝试删除那些(几乎总是)数字的部分:
Adrienne 3729F Beige/Blue Geometric Area Rug
Adrienne 3836E Grey/Multi Geometric Area Rug
Adrienne 3960G Navy/Gray Floral Area Rug
Adrienne 4130C Brown/Orange Floral Area Rug
Adrienne 4138A Multi Stripe Area Rug
Adrienne 4142A Grey/Brown Floral Area Rug
Adrienne 4145E Green/Plum Oriental Area Rug
为了澄清,我试图删除的部分是在 Adrienne 之后,但是还有其他集合名称。这只是我正在处理的一个快照。我尝试过每一个人,并且问每个人,没有人可以提供帮助。
答案 0 :(得分:2)
这是相当高级的,但使用正则表达式更强大。定义要删除数字的范围。它可以是一个细胞或多个细胞=一次范围。你需要在sub Main
中定义你的范围,它会照顾到你。例如,我使用range("A1:A3")
。如果您的号码在A栏中,则只需使用cells(1,1).CurrentRegion
Sub RegexReplace(rng As Range, ByVal replace_what As String, ByVal replace_with As String)
Dim RE As Object
Dim v
Dim i As Long
Set RE = CreateObject("vbscript.regexp")
v = rng.Value2
RE.Pattern = replace_what
RE.Global = True
With RE
For i = 1 To UBound(v)
v(i, 1) = .Replace(v(i, 1), replace_with)
Next
End With
rng = v
End Sub
Sub Main()
Call RegexReplace(Range("A1:A3"), "\d", "")
End Sub
<强>结果:强>
修改1:
如果您还想删除附加到数字的字符,您可以轻松更改函数中的正则表达式参数并实现它:
Sub Main()
Call RegexReplace(Range("A1:A7"), "(\d+)[A-Z]", "")
End Sub
<强>结果:强>
答案 1 :(得分:0)
那些是不同的列还是一个大字符串?
一种简单的方法可能是简单地替换数字3的所有单个数字:
=replace(A1;find("3";A1);1;"")
答案 2 :(得分:0)
如果您知道如何使用RegEx和VBA,这是一个很好的解决方案:
Option Explicit
Public Function RemoveSomeNumbers(s As String) As String
Dim regEx As Object
Dim inputMatches As Object
Dim regExString As String
Set regEx = CreateObject("VBScript.RegExp")
With regEx
'from 3 to 4 digits grouped together:
.Pattern = "[\d]{3,4}.*$"
.IgnoreCase = True
.Global = True
Set inputMatches = .Execute(s)
If regEx.test(s) Then
RemoveSomeNumbers = .Replace(s, vbNullString)
End If
End With
End Function
Public Sub TestMe()
Debug.Print RemoveSomeNumbers("Adrienne 3729F Beige/Blue Geometric Area Rug")
Debug.Print RemoveSomeNumbers("Adrienne 4142A Grey/Brown Floral Area Rug")
Debug.Print RemoveSomeNumbers("Vityata 4142A Grey/Brown Floral Area Rug")
End Sub
它会删除句子中前3位或更多位后的任何内容。它比Split()
更好,因为产品名称可能包含空格。
如果默认情况下不包含空格,则更简单的解决方案就是Split()
并获取第一个结果:
Split("Adrienne 3729F Beige/Blue Geometric Area Rug")(0)