Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1596to1600
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Runden per VBA

Runden per VBA
15.12.2017 11:34:36
Axel
Hallo zusammen,
ich habe eine Matrix, in der ich alle Zahlen, die zwischen -1 und 1 groß sind kaufmännisch runden muss:
-1 bis -0,5 = -1
-0,4999 bis 0,4999 = 0
0,5 bis 1 = 1
Zusätzlich sollen leere Zellen mit einer 0 befüllt werden.
Den ersten Part löse ich aktuell Spalte für Spalte per Formel
=WENN(UND(BK8>-1;BK80);1;0) und ändere alle Einsen manuell ab, aber ich habe insgesamt 5 Datein mit großen Matritzen, das schaffe ich heute nicht auf diesem Weg...
Ich wäre für eure Hilfe echt sehr dankbar.
Gruß
Axel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
WorksheetFunction.Round
15.12.2017 11:50:29
lupo1
WorksheetFunction.Round(DeineZahl, 0) rundet kfm.
Round(DeineZahl, 0) rundet mathematisch
AW: Runden per VBA
15.12.2017 11:50:30
Chris
Wie wäre es mit =runden(BK8;0)
Oder, falls es nur die Optik dienen soll, einfach die Kommastellen in der Formatierung auf 0 setzen.
AW: Runden per VBA
15.12.2017 12:04:44
Axel
Das Thema ist, dass die Werte per Formel weiterverarbeitet werden, was für alle anderen Zahlen auch so bleiben soll, aber bei den Werten zwischen -1 und 1 kommt nichts Sinnvolles raus.
Neben dem Runden dieser kleinen Werte müssen ja auch noch die leeren Zellen mit Nullen befüllt werden...
Kann mir jemand so ein Makro bauen?
Matrix wäre Spalte G:CB
Anzeige
AW: Runden per VBA
15.12.2017 12:35:51
Rudi
Hallo,
sowas?
Sub Machs()
Call RundeMich(Range("A1: zz2000"))
End Sub
Sub RundeMich(DieMatrix As Range)
Dim vArr, lngI As Long, lngJ As Long
Application.ScreenUpdating = False
vArr = DieMatrix.Value
For lngI = 1 To UBound(vArr)
For lngJ = 1 To UBound(vArr, 2)
Select Case DieMatrix(lngI, lngJ)
Case "":                  vArr(lngI, lngJ) = 0
Case -0.5 To -1:          vArr(lngI, lngJ) = -1
Case Is > -0.5, Is 

Gruß
Rudi
AW: Runden per VBA
15.12.2017 13:15:11
Axel
Hi Rudi,
mit Deinem Makro werden alle Werte der Range auf Null gesetzt. Muss da nicht erst noch das aktive.worksheet definiert werden?
Anzeige
AW: Runden per VBA
15.12.2017 14:34:34
Chris
so könnte es machen was du möchtest...
Sub RundeMich(DieMatrix As Range)
Dim vArr, lngI As Long, lngJ As Long
Application.ScreenUpdating = False
vArr = DieMatrix.Value
For lngI = 1 To UBound(vArr)
For lngJ = 1 To UBound(vArr, 2)
Select Case DieMatrix(lngI, lngJ)
Case "":                  vArr(lngI, lngJ) = 0
Case -1 To -0.5:          vArr(lngI, lngJ) = -1
Case 0.5 To 1:            vArr(lngI, lngJ) = 1
Case Is > -0.5, Is 

AW: Runden per VBA
15.12.2017 15:21:07
Axel
Hi Chris,
danke für's Kümmern, aber nein, bei mir werden alle Zellen auf 0 gesetzt...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige