Wenn explizit auf eine Funktion verwiesen wurde, nehme ich mal an sie wollen alle abgerundeten Ergebnis als Funktionsrückgabewert sehen.
Option Explicit
Sub Test()
With Range("E4:E103")
'Beispieldaten generieren
.Formula = "=RANDBETWEEN(700,5000)/1000"
.Value = .Value
'abrunden
.Offset(0, .Columns.Count).Value = Rundungsfunktion(.Cells)
End With
End Sub
Public Function Rundungsfunktion(Values As Excel.Range) As Variant
ReDim vntResult(1 To Values.Rows.Count, 1 To Values.Columns.Count)
Dim i As Long
Dim j As Long
For i = 1 To Values.Columns.Count
For j = 1 To Values.Rows.Count
vntResult(j, i) = Int(Values(j, i).Value * 10) / 10
' 'bzw. ohne Funktionsrückgabe
' Values(j, i).Offset(0, Values.Columns.Count).Value = Int(Values(j, i).Value * 10) / 10
Next
Next
Rundungsfunktion = vntResult
Erase vntResult
End Function
Bei positiven Werten muss man hierfür Int() nehmen, bei negativen Werten müsste man Fix() nehmen.
Das ganze würde auch mit mehr als nur einer Spalte funktionieren.
Anstatt As Variant könnte man z.B. auch As Double() verwenden.
Grüße
|