Thanks Marc workings as requestedCode:Sub Demo() With ActiveSheet With .[F2].Resize(.UsedRange.Rows.Count - 1) .Formula = "=ROUND(E2,0)" .Formula = .Value End With End With End SubDo you like it ? So thanks to click on bottom right Like !


If you wanted to replace the original data instead of add a Column
Code:Dim c As Range For Each c In Range("E2:E10") c.Value = Application.WorksheetFunction.Round(c, 0) Next
thank you HuiCode:Dim c As Range For Each c In Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row) c.Value = Application.WorksheetFunction.Round(c, 0) Next

You can test it for yourself...Hi, Mr. hui & Mr. jindon
witch of these code is faster
If I may ask
thank you both
Sub test()
Dim s As Single
s = Timer
With Range("e2", Range("e" & Rows.Count).End(xlUp))
.Value = Evaluate("index(round(" & .Address & ",0),)")
End With
MsgBox Format$(Timer - s, "0.00000")
End Sub
Dim myArr As Variant
myArr = Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row).Value2
For i = 1 To UBound(myArr, 1)
myArr(i, 1) = Round(myArr(i, 1))
Next i
Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row) = myArr
Dim myArr As Variant
myArr = Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row).Value2
For i = 1 To UBound(myArr, 1)
myArr(i, 1) = round(myArr(i, 1), 0)
Next i
Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row) = myArr
End Sub
@mohadin
Using the worksheet function round gives you more control, but uis so much slower than the VBA Round
So myArr(i, 1) = round(myArr(i, 1) )
is much faster than
myArr(i, 1) = Application.WorksheetFunction.round(myArr(i, 1), 0)
Note: The two Round function have a slightly different syntax
Or
Code:Sub test() With Range("e2", Range("e" & Rows.Count).End(xlUp)) .Value = Evaluate("index(round(" & .Address & ",0),)") End With End Sub


well,thank you very much in deadCode:myArr(i, 1) = Round(myArr(i, 1))
works ok in Excel 2016
I cannot test in 2013
You can replace Round with
if you wantCode:myArr(i, 1) = Int(myArr(i, 1) + 0.5)