如何设置一个宏来剥离第一列中##### XX的字母,并将它们放入L列的同一行?谢谢!
答案 0 :(得分:0)
假设您正在处理第一张工作表,并且在保留前5个字符的同时始终剥离最后两个字符,则以下代码将起作用:
Public Sub StripOff()
Dim iRow as Integer
iRow = 2 'Assuming row 1 is headers, else make this 1
While Sheets(1).Range("I" + Cstr(iRow)).Value <> ""
Sheets(1).Range("L" + CStr(iRow)).Value = Right(Sheets(1).Range("I" + Cstr(iRow)).Value, 2)
Sheets(1).Range("I" + Cstr(iRow)).Value = Left(Sheets(1).Range("I" + Cstr(iRow)).Value, 5)
iRow = iRow + 1
Wend
End Sub
答案 1 :(得分:0)
我从您的问题中理解的操作词是剪切和剥离。在我看来,这意味着最后两个字母从第I列永久删除并放在L列中。
Sub cut2right()
Dim v As Long, vPFXS As Variant, vSFXS As Variant
With Worksheets("Sheet6")
vPFXS = .Range(.Cells(2, "I"), .Cells(Rows.Count, "I").End(xlUp))
ReDim vSFXS(1 To UBound(vPFXS), 1 To 1)
For v = LBound(vPFXS, 1) To UBound(vPFXS, 1)
If Len(vPFXS(v, 1)) > 1 Then
vSFXS(v, 1) = Right(vPFXS(v, 1), 2)
vPFXS(v, 1) = Left(vPFXS(v, 1), Len(vPFXS(v, 1)) - 2)
End If
Next v
.Cells(2, "I").Resize(UBound(vPFXS, 1), 1) = vPFXS
.Cells(2, "L").Resize(UBound(vPFXS, 1), 1) = vSFXS
End With
End Sub
使用变量数组应该加速处理具有可变长度字符串值的许多单元格。如果它们的长度都相同,那么手动运行具有固定长度的Text-to-Columns命令到未使用的列,然后将结果复制并粘贴到相应的列就可以了。
答案 2 :(得分:0)
您可以使用VBA Val函数从字符串中获取前导数字字符。要在工作表上使用此功能,您需要在标准VBA模块中创建用户定义函数(UDF)。
Function LeadingNumbers(Str As String) As Double
LeadingNumbers = Val(Str)
End Function
只需在单元格中输入函数并引用包含所需字符串的单元格即可清理&#34;。