vba - 更改列中数值的符号

标签 vba excel formula

我在 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 列的二维数组),循环遍历该数组,将其中的每个数字替换为它的负面,然后将其转移回来。这个Rangearray然后返回 Range策略在 VBA 中相当普遍(并且相当有效)。

关于vba - 更改列中数值的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989841/

相关文章:

Excel Application.InputBox 位置

c# - 使用 C# 创建 Excel 表格的最简单方法是什么?

python - 使用openpyxl向下计算公式

javascript - 如何以编程方式确定方格图案中的方格状态?

excel - #姓名?如何阅读公式栏以更改错误的公式 - 不要覆盖它

vba - 非Variant参数可以变成vbError吗?

excel - Access 2013 VBA 自动化 Excel 丢失窗口

vba - Excel VBA : Error Handling Breaking Mid-Code

excel - 在Excel中使用VBA发送即时消息

java - 无法通过我的 R 脚本将工作表添加到 excel 文件