我在Excel中编写了一个非常简单的宏来删除一些尾随的过多文本。这是代码:
Sub remove_excess_names_from_part_number()
Dim i As Integer
Application.ScreenUpdating = False
For i = 1 To 1000
Cells(i, 3).Value = Left(Cells(i, 3).Value, 10)
Next i
Application.ScreenUpdating = True
End Sub
我看不出这会如何变得更简单,但我对此代码片段的糟糕性能感到失望。 VBA不能对这样的简单代码进行一些优化吗?
答案 0 :(得分:4)
尝试以下代码:
C列是结果列,数据是A列
Sub remove_excess_names_from_part_number()
Application.ScreenUpdating = False
Dim lastRow As Long
lastRow = Range("A" & Rows.Count).End(xlUp).Row
Range("C1:C" & lastRow).FormulaR1C1 = "=Left(RC[-2],10)"
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:3)
你真的需要VBA吗?如果需要,可以使用Excel的文本到列
我们说Excel中的数据是这样的
Fixed Width
10
注意:如果第10个字符是SPACE
,那么它将在第2行中被截断
如果您仍然想要一个VBA解决方案,那么我建议在@assylias建议的情况下将整个范围加载到数组中,然后在执行计算后将其重新放回。
@Santosh还给了你一个建议,你可以一次性输入所有单元格。如果您可以使用非VBA选项,则可以手动输入单元格中的公式并执行自动填充:)