我有一个我有ID的专栏。我必须将一个文件中的数据与其他文件匹配,但是在一个表中有纯ID,另一个表有ID +年,所以我必须删除该列的每个单元格中的最后四个字符。我试过这个:
For i=2 to ArraySize
ExWorkSheet.Cells(i, ColumnNumber) = ExWorkSheet.Cells(i, ColumnNumber).remove(len(string)-4,4)
Next
此代码有效但速度很慢。我在表中有17k +行。 我也尝试使用函数替换,它更快,因为它适用于整个范围,但它删除每个字符串2017(或2016等),即使它在ID的中间。
答案 0 :(得分:1)
以更快的速度将范围读入数组,处理数组并将其写回。
请尝试以下代码:
Sub del_4_chars()
Const ColumnNumber As Integer = 4
Dim Arr, ArraySize As Long, I As Long
ArraySize = 100
Arr = ExWorkSheet.Range(Cells(2, ColumnNumber), Cells(ArraySize, ColumnNumber)).Value2
For I = 1 To ArraySize - 1
Arr(I, 1) = Left(Arr(I, 1), Len(Arr(I, 1)) - 4)
Next I
ExWorkSheet.Range(Cells(2, ColumnNumber), Cells(ArraySize, ColumnNumber)).Value2 = Arr
End Sub
答案 1 :(得分:0)
相同的编码上层。
Dim vDB, rngDB As Range
Set rngDB = ExWorkSheet.Cells(2, ColumnNumber).Resize(arraysize)
vDB = rngDB
For i = 1 To UBound(vDB, 1)
vDB(i, 1) = Left(vDB(i, 1), Len(vDB(i, 1)) - 4)
Next i
rngDB = vDB