gpt4 book ai didi

vba - 范围内的 Excel VBA Length-1

转载 作者:行者123 更新时间:2023-12-04 06:25:57 24 4
gpt4 key购买 nike

在很长一段时间没有需要之后,我最近进入了 Excel 宏开发。

我有一列有两百行,每一行都有一个值。我写了一个循环来迭代每一行值,读取当前值,然后将值写回减去最后一个字符。

这是我写的一些实际(和伪)代码。

Dim theRow as Long
Dim totRow as Long
Dim fooStr as String


theRow = 2 'we begin on the second row of the colummn
totRow = 201 'there are 200 values


For theRow = 2 to totRow
fooStr = WorkSheets(DestSheet).Cells(theRow,"A").Formula 'read the cell value
fooStr = Left(fooStr,Len(fooStr)-1 'subtract the last character from the value
Cells(theRow,1).Value = fooStr 'write the value back
Next theRow

在我做了一些阅读之后,我了解到使用 Range 读取和写入值是最佳实践。是否可以使用 Range 重写我正在做的事情,以便它运行得更快。

这是我到目前为止想到的。
Range("A2:A201").Value = Len(Range.Left("A2:A201").Value)-1

但是,这不起作用。

如果确实可能,有关如何执行此操作的任何线索?

感谢您提供任何提示。

最佳答案

如果您想要最大的性能(您不需要 200 行,但是...)您必须最小化对范围的读取和写入(主要是写入)的次数。这意味着将整个范围读入一个数组,操作该数组,然后将其写回该范围。与循环中的 200 次相比,这是一次读取和一次写入。这是一个例子。

Sub RemoveLastChar()

Dim vaValues As Variant
Dim i As Long

vaValues = Sheet1.Range("A2").Resize(200).Value

For i = LBound(vaValues, 1) To UBound(vaValues, 1)
vaValues(i, 1) = Left$(vaValues(i, 1), Len(vaValues(i, 1)) - 1)
Next i

Sheet1.Range("A2").Resize(UBound(vaValues, 1), UBound(vaValues, 2)).Value = vaValues

End Sub

关于vba - 范围内的 Excel VBA Length-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6039381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com