我在 D 列中有数据。
D1 列有一个标题,D2 列向下有数值。我想选择 D 列中的所有数值(值的数量未知)并将它们乘以 -1(替换 D 列中的当前值)。我将如何通过 VBA 代码做到这一点?
如果我可以在 Excel 中使用公式,我只需将公式 D2*-1 向下拖动;但是,我需要等效的 VBA。
最佳答案
当使用 100,000 个随机值进行测试时,以下内容几乎可以立即生效:
Sub MultColDbyOne()
Dim i As Long, n As Long, A As Variant
n = Cells(Rows.Count, "D").End(xlUp).Row
A = Range(Cells(2, "D"), Cells(n, "D")).Value
For i = LBound(A) To UBound(A)
A(i, 1) = -A(i, 1)
Next i
Range(Cells(2, "D"), Cells(n, "D")).Value = A
End Sub
sub 的工作方式是首先确定 D 列中数据的最后一行,然后将其传输到 VBA 数组(有点烦人的是,一个只有 1 列的二维数组),循环遍历该数组,将其中的每个数字替换为它的负面,然后将其转移回来。这个
Range
至array
然后返回 Range
策略在 VBA 中相当普遍(并且相当有效)。
关于vba - 更改列中数值的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989841/