Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将值从-更改为+并将其复制到新工作表_Vba_Excel - Fatal编程技术网

Vba 将值从-更改为+并将其复制到新工作表

Vba 将值从-更改为+并将其复制到新工作表,vba,excel,Vba,Excel,这里的成员帮助我构建了这段代码 我想,不是在一张纸上把所有的负值都转换成正值,而是把整行都转换成这样: 并将该行移到新工作表中,所有数字都转换为正数 Sub ntp() Dim ws As Worksheet Dim cel As Range With ActiveWorkbook.Worksheets("originalNeg") For Each cel In .Range("I2:I" & .Range("I" & Rows.Coun

这里的成员帮助我构建了这段代码

我想,不是在一张纸上把所有的负值都转换成正值,而是把整行都转换成这样:

并将该行移到新工作表中,所有数字都转换为正数

Sub ntp()
    Dim ws As Worksheet
    Dim cel As Range
    With ActiveWorkbook.Worksheets("originalNeg")
        For Each cel In .Range("I2:I" & .Range("I" & Rows.Count).End(xlUp).row)
            If cel.value < 0 Then cel.value = Abs(cel.value)
        Next cel
    End With
End Sub

最快的方法是将数据加载到数组中,对其进行处理,然后将其写入新的工作表

Sub ntp2()
    Dim values As Variant
    Dim x As Long
    With ActiveWorkbook.Worksheets("originalNeg")
        values = .Range("A1" , .Range("I" & .Rows.Count).End(xlUp)).value
    End With

    For x = 2 To UBound(values)
        If values(x, 9) < 0 Then values(x, 9) = Abs(values(x, 9))
    Next

    With ActiveWorkbook.Worksheets("NewSheet")
        .Range("A1").Resize(UBound(values), UBound(values, 2)).value = values
    End With
End Sub

@先生,我的问题是代码。不知道你在说什么。所以如果已知值x为负数,为什么不直接赋值-x而不是absx呢?OTOH,可以分配绝对值,而不考虑符号,无需先测试。这两种方法似乎都是在浪费性能。上面的代码不起作用。正在给我一个错误,当我单击“调试”时,要求我修复此值=.RangeA1&.RangeI&.Rows.Count.EndxlUp.valueThomas这工作正常,但问题是,当我尝试将此宏分配给按钮时,它会给我一条错误消息,说明引用必须指向宏工作表。我有三个按钮,其中我在包含原始数据的原始工作表中指定了三个不同的宏。单击第一个后,宏工作正常,它执行我要求它执行的操作,第二个宏提取所有带负值的行并将其粘贴到新工作表它自己创建了一个新工作表并将所有数据粘贴到那里现在您在上面帮助我的宏我想获取所有带负值的行并自己创建一个新工作表,不仅粘贴带负值的行,而且也把它们转换成正数。我希望将所有这些宏指定给按钮,并从原始工作表中运行它们。我是在前两个宏中这样做的,但在上面为我构建的宏中,我很难做到这一点。@user1016274使用数组非常快。除非你做的作业有千万份之多,否则差别是可以忽略不计的。