我试图在列的特定字符串列表之后将所有内容移除到右边。
Sub KeepItem()
Dim itemDescr As Range
Dim Rng As Range
Dim xChar As Variant
Set itemDescr = Range("$D:$D")
xChar = Array(" 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", " .")
For Each Rng In itemDescr
xValue = Rng.Value
Rng.Value = Left(xValue, InStr(xValue, xChar) - 1)
Next
End Sub这
VITA COCO TROP 16.9OZ
ARGO CAROLINA HNY 13.5OZ GLS
ARGO GRN TEA GNGR 13.5OZ GLS
ARGO HIBISC SNGRIA 13.5OZ GLS
ARGO MOJI TEA 13.5OZ GLS看起来应该是:
VITA COCO TROP
ARGO CAROLINA HNY
ARGO GRN TEA GNGR
ARGO HIBISC SNGRIA
ARGO MOJI TEA我是一个新的VBA程序员,我会感谢您的反馈。
错误:(类型不匹配):
Rng.Value = Left(xValue, InStr(xValue, xChar) - 1)发布于 2015-07-08 16:56:29
如果你想在数字出现之前得到短信,这对你有用吗?
您需要添加对Microsoft VBScript Reglar表达式5.5的引用。
Debug.print GetLeftPart ("TA COCO TROP 16.9OZ")
Function GetLeftPart (stringToCheck As String) as string
Dim regex As New RegExp
Dim regmatch As MatchCollection
regex.Pattern = "\s\d"
Set regmatch = regex.Execute(stringToCheck)
GetLeftPart = Left(stringToCheck , regmatch.Item(0).FirstIndex)
End function另一种更麻烦的方法,但由于作者已经开始工作,这可能适合上下文。
Sub KeepItem()
Dim itemDescr As Range
Dim Rng As Range
Dim xChar As Variant
Dim ele As Variant
Dim iFoundAt As Integer
Dim xValue As String
Set itemDescr = Range("$D:$D")
xChar = Array(" 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", " .")
For Each Rng In itemDescr
iFoundAt = 0
xValue = Rng.Value
'find if this is a line we are interested in
If xValue = "" Then GoTo continue 'Question - do you want to continue or stop. if stop replace continue with exit for
For Each ele In xChar
iFoundAt = InStr(xValue, ele)
If iFoundAt > 0 Then Exit For
Next
If iFoundAt > 0 Then Rng.Value = Left(xValue, iFoundAt - 1)
continue:
Next
End Sub发布于 2015-07-08 22:32:53
尝试这样做,对于它循环0到9的每个单元格,使用Split命令将字符串拆分成一个数组,我们希望所有东西都放在左边,所以我们接受第一个元素(索引0),然后修剪掉空间。
Sub RemoveNumOnwards()
Dim X As Long, Y As Long
For X = 1 To Range("D" & Rows.Count).End(xlUp).Row
For Y = 0 To 9
Range("D" & X).Formula = Trim(Split(Range("D" & X).text, Y)(0))
Next
Next
End Sub编辑:刚刚看到关于小数点的注释,下面是更新的代码:
Sub RemoveNumOnwards()
Dim X As Long, Y As Long, xChar As Variant
xChar = Array(" 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", " .")
For X = 1 To Range("D" & Rows.Count).End(xlUp).Row
For Y = LBound(xChar) To UBound(xChar)
Range("D" & X).Formula = Trim(Split(Range("D" & X).text, xChar(Y))(0))
Next
Next
End Subhttps://stackoverflow.com/questions/31298829
复制相似问题