我需要在excel中创建一个VBA脚本,以更改订单号,将订单号从前面的“ CD”更改为结尾的“ CD”,从而将顺序从“ CD00001”更改为“ 00001CD”
任何帮助都是极好的。所有订单号都在B列中,从第5行开始。请帮助。
我到目前为止所拥有的:
Private Sub OrderNumber_Click()
Dim Val As String
Dim EndC As Integer
EndC = Worksheets("Raw Data Upload").Range("A1048576").End(xlUp).Row
For i = 5 To EndC
Val = Right("B" & i, Len("B" & i) - 2) & Left("B" & i, 2)
Range("B" & i).Value = Val
Next
End Sub
这将订单号替换为B5,B6等,但是如果我将此功能放到Excel本身中,则可以正常工作。
最佳答案
只需使用:
Right(Range("B" & i), Len(Range("B" & i)) - 2) & Left(Range("B" & i), 2)
另一种方法是将单元格设置为
Range()
:Sub t()
Dim cel As Range
Dim endC As Long
endC = Worksheets("Raw Data Upload").Range("A1048576").End(xlUp).Row
For i = 5 To endC
Set cel = Range("B" & i)
myVal = Right(cel, Len(cel) - 2) & Left(cel, 2)
Range("B" & i).Value = myVal
Next
End Sub
当前,当您对第5行执行
Right("B" & i, Len("B" & i) - 2) & Left("B" & i, 2)
时,该行将变为Right("B5", Len("B5") - 2) & Left("B5", 2)
,则其评估结果很简单:Right("B5",0) & Left("B5",2)
,即[nothing] & B5
,最终成为B5
注意缺少使用
B5
作为范围。而是将其视为字符串。(此外,我假设这将在
ActiveSheet
上运行。否则,请在范围之前添加工作表,即Worksheets("Raw Data Upload").Range("B" & i)...
)