VB.NET删除excel中字符串中特定的最后一个字符数

时间:2017-07-06 07:54:46

标签: excel vb.net vba excel-vba

我有一个我有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的中间。

2 个答案:

答案 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
相关问题