There are a few ways of doing this.

- The simplest way to do this without any VB is as follow (it also will do negative to positive).
- Add -1 to a cell on your sheet
- Copy that cell
- Select the range that you want to change the sign on
- Select “paste special” and from the operation section select multiple and click ok

- You could multiple the range of numbers by another cell reference. This can be done manually or via VB. Here is some code that will do this for you (in a workbook download at end of this post).
- VBA addin – this is for me not the simplest way to achieve this but it certainly the most convenient. The VBA is included in the example workbook at the bottom of this post. The added value you achieve with this is that you can add it to an addin and have it on a shortcut key.Plus I have three options with it 1 & 2 are convert all to positive or negative. This is something that you can’t achieve with the above 2 solutions. 3rd option is invert positive to negative or negative to positive (as with the above selections). Here is the code for the form:

Sub ApplyAFormulaToCell()

On Error GoTo ENDERStringAction = Application.InputBox(“Type the formula to apply on the cells you have selected,” & vbNewLine & “i.e ‘/1000’, ‘+4’ or ‘*2.5′” & vbNewLine & “use the point as decimal separator. You can also use cell references (select with a mouse).”, “Apply formula”, “/100”, , , , , 2)

If StringAction = “” Then Exit Sub

If StringAction = False Then Exit SubApplication.ScreenUpdating = False

Application.Calculation = xlCalculationManual

CellLength = Selection.Cells.Count

i = 1For Each rngCel In Selection

If rngCel.Formula <> “” Then

Application.StatusBar = “Processing: ” & StringAction & ” ” & Int(i * 100 / CellLength) & “%”

StringFormula = rngCel.FormulaR1C1If Left(StringFormula, 1) = “=” Then StringFormula = Right(StringFormula, Len(StringFormula) – 1)

If rngCel.Value <> “” And IsNumeric(rngCel.Value) Then

rngCel.Formula = “=(” & StringFormula & “)” & StringAction

End If

Else

End Ifi = i + 1

Next rngCel

Application.StatusBar = False

Application.Calculation = xlCalculationAutomatic

Exit SubENDER:

Application.StatusBar = False

Application.Calculation = xlCalculationAutomatic

Application.ScreenUpdating = True

MsgBox “An error occured.” & vbNewLine & “Please check your formula: ‘ ” & StringAction & ” ‘”, vbCritical

End Sub

Option Explicit

Dim RngCell As Range

Dim RngSelection As Range

Dim CellLen As Long

Dim i As LongPrivate Sub cmdCancel_Click()

Unload Me

End SubPrivate Sub cmdOK_Click()

Application.ScreenUpdating = False

Set RngSelection = selection

selection.SpecialCells(xlCellTypeConstants, 1).Select

CellLen = selection.Cells.Count

i = 1

If OptPositive = True Then Call ChangetoPositive

If OptNegative = True Then Call ChangetoNegative

If OptFlip = True Then Call Flip

Application.StatusBar = False

Application.ScreenUpdating = True

RngSelection.Select

MsgBox “Numbers converted”, vbInformation, “SP” & ” – Convert numbers”

End SubSub ChangetoPositive()

For Each RngCell In selection

Application.StatusBar = “Converting all numbers to positive : ” & Int(i * 100 / CellLen) & “%”

If IsNumeric(RngCell.Value) Then

If RngCell.Value < 0 Then RngCell.Value = RngCell.Value * -1

End If

i = i + 1

Next

End SubSub ChangetoNegative()

For Each RngCell In selection

Application.StatusBar = “Converting all numbers to negative : ” & Int(i * 100 / CellLen) & “%”

If IsNumeric(RngCell.Value) Then

If RngCell.Value > 0 Then RngCell.Value = RngCell.Value * -1

End If

i = i + 1

Next

End SubSub Flip()

For Each RngCell In selection

Application.StatusBar = “Converting all numbers to negative : ” & Int(i * 100 / CellLen) & “%”

If IsNumeric(RngCell.Value) Then

RngCell.Value = RngCell.Value * -1

End If

i = i + 1

Next

End Sub

Here is the workbook with the above code in. Feel free to change it but if you use it please add my credit. Also if you have any other cool ways of doing this let me know. Thanks