2017-10-19 6 views
-1

ここのメンバーがこのコードを作成するのを手伝ってくれました。値を - から+に変更し、新しいワークシートにもコピーします

私はそれは次のようになり、全行取る代わりに、一枚のシートに正のすべての負の値を変換するの、希望:

enter image description here

とすべてで新しいワークシートに、その行を移動します数字は正に変換されます。

+0

@jsotolaコードは私の質問にあります。あなたが何を話しているのか分かりません。申し訳ありません – OneaboveAll

答えて

2

最も速い方法は、データを配列にロードして処理し、新しいワークシートに書き込むことです。

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 
+0

'x'の値が負であることがわかっている場合は、' abs(x) 'の代わりに' -x'を指定するだけです。 OTOHでは、最初にテストすることなく、符号に関係なく絶対値を割り当てることができます。どちらの方法もパフォーマンスの浪費のようです。 – user1016274

+0

上記のコードは動作していません。私にエラーを与えて、デバッグをクリックして "値= .Range(" A1 "&.Range(" I "&.Rows.Count).End(xlUp))。"値を修正するように要求しています。 " – OneaboveAll

+0

トーマス正常に動作しますが、問題は、このマクロをボタンに割り当てようとすると、「参照はマクロシートである必要があります」というエラーメッセージが表示されることです。私は元のデータからなる元のシートに3つの異なるマクロを割り当てた3つのボタンを持っています。私は最初の1つをクリックした後、マクロはうまく動作し、私は何をするように頼んだ、2番目のマクロは、負の値を持つすべての行を抽出し、それらを新しいシートに貼り付ける(それは新しいシートを単独で作成し、データがあります) – OneaboveAll

関連する問題