Pasar de negativo a positivo números de varias celdas

Tengo las siguientes celdas en la hoja1:

Monto

-234

23

-456

Y quiero pasarlo a positivo en otra hoja2

Monto_positivo

234

23

456

Debo recalcar que no todos los numero son negativos como en el ejemplo.

Espero puedan ayudarme muchas gracias

3 respuestas

Respuesta
2

Si tienes esto en la hoja1

           A

1      -234

2       23

3      -456

En la hoja 2 pon esto

             A

1       =SI(Hoja1!A1<0,Hoja1!A1*-1,Hoja1!A1)

Arrastra la fórmula en la hoja 2 hasta la última fila que tienes en la hoja1

Disculpa olvide mencionar que lo necesito en macros.

Va la macro

Sub mult()
'Por.DAM
    For i = 1 To Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
        If Sheets("Hoja1").Cells(i, "A") < 0 Then
            Sheets("Hoja2").Cells(i, "A") = Sheets("Hoja1").Cells(i, "A") * -1
        Else
            Sheets("Hoja2").Cells(i, "A") = Sheets("Hoja1").Cells(i, "A")
        End If
    Next
End Sub

Recuerda valorar la respuesta.

Respuesta
1

César (y Dante). También te puede servir:

Sub noNeg()
With Sheets("Hoja1").Range("a1", Sheets("Hoja1").Cells(Rows.Count, "a").End(xlUp))
Sheets("Hoja2").[b1].Resize(.Count) = Evaluate("transpose(transpose(abs(" & _
.Address(external:=True) & ")))")
End With
End Sub
Respuesta
1

No me parece optimo poner como condición de final de bloque una evaluación complicada, es mejor hacer una sola evaluación y poner el valor obtenido como condición final de bloque. Asímismo hay menos instrucciones usando la orden abs, se ganará teiempo. Y también se gana definiendo como Integer las variables que pueden funcionar como enteras.

Sub positivar()
Dim FilaFinal, i as Integer
FilaFinal = Sheets("Hoja1").Range("A" & Rows.Count).End(xlUp).Row
For i = 1 To FilaFinal
  Sheets("Hoja2").Cells(i,"A") = abs(Sheets("Hoja1").Cells(i,"A"))
Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas