VB.NET在excel中删除string中最后一个字符的具体数目

我有一个专栏,我有一个ID。 我必须从一个文件与其他数据匹配,但是在一个表中有纯ID,另一个是ID +年,所以我必须删除该列的每个单元格中的最后四个字符。 我试过这个:

For i=2 to ArraySize ExWorkSheet.Cells(i, ColumnNumber) = ExWorkSheet.Cells(i, ColumnNumber).remove(len(string)-4,4) Next 

这段代码有效,但速度很慢。 我在桌上有17k +行。 我也尝试过使用函数replace,因为它在整个范围内工作,所以它更快,但是它删除每个string2017(或2016等),即使它在ID中间。

它更快地将范围读入数组,处理数组并将其写回。

试试下面的代码:

 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 

相同的编码上层。

 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