Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1384to1388
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

Aufrunden von Speicherkapazität

Aufrunden von Speicherkapazität
13.10.2014 14:50:20
Speicherkapazität
Hallo,
habe die Spalte
Gesamter physischer Speicher
511,48 MB
3.063,03 MB
4.001,15 MB
255,43 MB
503,36 MB
503,36 MB
1.909,75 MB
503,45 MB
1.909,75 MB
1.909,75 MB
Möchte das die Speicherkapazittät aufgerundet werden.
Bsp.: von 0 bis 512 soll stehen=> 512 MB
Problem ist, dass in die Zellen, die Zahlen noch das Bezeichung MB haben.
Wie kann ich mit VBA die Spalte einordnen, also aufrunden auf die Zahlen, zb.
512 MB
1024 MB
2048 MB
usw...
Also mit der Quellcode hat es leider nicht funktiniert :(
Sub HaputspeichFormatierung()
' CPU_Geschwindkeit_Ersätzen Makro
' 561-562-563-564-565=566 331-332=333
AbisZ = Sheets(1).Range("I2").End(xlDown).Row
For i = 1 To AbisZ
W = Sheets(1).Cells(i, 9).Value
'Wr = Int(W + 0.1)
Select Case W
Case 0 To 514
Sheets(1).Cells(i, 9).Value = 512
Case 501 To 1024
Sheets(1).Cells(i, 9).Value = 1024
End Select
Next
End Sub

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufrunden von Speicherkapazität
13.10.2014 15:01:10
Speicherkapazität
Hallo Riman,
kannst du auch ohne VBA machen:
=VRUNDEN(LINKS(D3;LÄNGE(D3)-2);2)
In D3 steht in dem Fall dein Ausgangswert
Gruß
yummi

AW: Aufrunden von Speicherkapazität
13.10.2014 15:02:10
Speicherkapazität
Warum VBA?

Tabelle1
 AB
1511,48 MB512 MB
23.063,03 MB3072 MB
34.001,15 MB4096 MB
4255,43 MB512 MB
5503,36 MB512 MB
6503,36 MB512 MB
71.909,75 MB2048 MB
8503,45 MB512 MB
91.909,75 MB2048 MB
101.909,75 MB2048 MB

verwendete Formeln
Zelle Formel Bereich N/A
B1:B10=AUFRUNDEN(LINKS(A1;LÄNGE(A1)-2)*1/512;0)*512 &" MB"  
Excel-Inn.de
Hajo-Excel.de
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 18.17 einschl. 64 Bit



Anzeige
AW: Aufrunden von Speicherkapazität
13.10.2014 15:05:57
Speicherkapazität
HI
liste in einer Hilfsspalte (z.B. Spalte X) die gerundeten MB-Werte auf
(aufsteigende sortiert, beginnend mit 0)
0
512
1024
2048
usw...

wenn in A1 der ungerundete MB-Wert steht, kannst du mit folgender Formel den passenden gerundeten MB-WErt ermitteln:
=Index(X:X;Vergleich(A1;X:X;1)+1)
zur Erläuterung: die Vergleichsfunktion ermittelt die Zeilennummer des nächstkleineren Wertes, da du den nächstgrösseren brauchst, wird einfach 1 zur Zeilennummer hinzuaddiert.
problematisch wären hier nur genaue Treffer, dh auch bei genau 512 MB würde auf 1024 aufgerundet.
wenn das nicht passieren soll:
=Index(X:X;Vergleich(A1;X:X;1)+(SVerweis(A1;X:X;1;1)
hier wird dann auf genaue Übereinstimmung geprüft, so genau 512 nicht aufgerundet wird.
Gruß Daniel

Anzeige
AW: Aufrunden von Speicherkapazität
13.10.2014 15:06:46
Speicherkapazität
Hallo!
Etwas in dieser Richtung?
 ABC
1511,48 MB511,48512
23.063,03 MB3063,033072
34.001,15 MB4001,154096
4255,43 MB255,430
5503,36 MB503,36512
6503,36 MB503,36512
71.909,75 MB1909,752048
8503,45 MB503,45512
91.909,75 MB1909,752048
101.909,75 MB1909,752048

ZelleFormel
B1=LINKS(A1;LÄNGE(A1)-3)^1
C1=RUNDEN(B1/512;0)*512

Gruß, Ralf

Anzeige
... und ja, es ist AUFRUNDEN() statt RUNDEN() kwT
13.10.2014 15:11:21
RPP63
... und ja, es ist AUFRUNDEN() statt RUNDEN()

AW: Aufrunden von Speicherkapazität
13.10.2014 15:28:41
Speicherkapazität
Gibt es auch eine Lösung per VBA, weil meine Tabelle mehrere VBA Schritte durchführt... und ich das gerne per VBA haben möchte.

AW: Aufrunden von Speicherkapazität
13.10.2014 16:01:49
Speicherkapazität
HI
das geht prinzipell schon mit deinem Code.
da sind halt nur ein paar Fehler drin.
zunächst einmal müsste man wissen, ob in den Zellen
a) eine Zahl steht (511,48) und dann das MB durch das zahlenformat hinzugefügt wird oder in einer seperaten Spalte steht
b) tatsächlich der Text "511,48 MB" steht
im zweiten Fall müsstest du erst den Text noch in eine Zahl wandeln:
W = CDbl(Replace(Sheets(1).Cells(i, 9).Value, " MB", "")
desweiteren sollten sich die Bereiche die du da angibst im Select Case nicht überlappen.
für den Ersten Fall ist deine Grenze 514, der zweite Fall soll aber schon ab 501 beginnen, das ist Unsinn.
Ich würde hier die Fälle so unterscheiden:
Select Case W
Case Is 

bei Select Case ist es so, dass nach der ersten zutreffenen Bedinung abgebrochen wird.
dh wenn Gruß Daniel

Anzeige
AW: Aufrunden von Speicherkapazität
14.10.2014 08:56:21
Speicherkapazität
Hallo Daniel,
dein Code gefällt mir sehr und ist auch sehr gut zu verstehen.
Also beim öffnen der Datei, hat die Spalte I die Format "Standard"
Hab es dann in Text umgewandelt und dann dein Code laufen lassen...
Fehler gibt nur bei der Zeile W = CDbl(Replace(Sheets(1).Cells(i, 9).Value, " MB", "")
"Typen unverträglich"
Soll ich die Spalte davor in Text oder in Zahl formatiren?
Danke
Gruß Riman

AW: Aufrunden von Speicherkapazität
14.10.2014 09:21:50
Speicherkapazität
Hi
das nachträgliche Formatieren bringt nicht viel.
Ich sollte wissen, was tatsächlich in der Zelle drin steht, wenn der Fehler auftritt.
Tritt der Fehler schon beim ersten Schleifendruchlauf auf oder erst später?
Wie ist die Variable W deklariert?
am besten ist, du lädst mal deine Datei hoch.
Gruß Daniel

Anzeige
AW: Aufrunden von Speicherkapazität
14.10.2014 09:55:59
Speicherkapazität
Hi
wenn ich versuche in der Datei das Marko zu starten passiert nichts.
Es kommt keine Fehlermeldung, aber es passiert auch nichts.
Kannst du mir sagen woran das liegt?
Gruß Daniel

AW: Aufrunden von Speicherkapazität
14.10.2014 10:06:10
Speicherkapazität
Keine Ahung, versuch mal einfach dein Code, auf die Spalte einzupassen.
Danke

Danke für dein Desinteresse! :-[ owT
14.10.2014 12:13:44
Luc:-?
:-?

ArchivNachtrag
15.10.2014 17:58:57
Luc:-?
Riman
:-?

AW: ArchivNachtrag
16.10.2014 10:50:03
Riman
Danke dir Sehr Luc:-?

AW: Aufrunden von Speicherkapazität
14.10.2014 11:21:20
Speicherkapazität

Sub HaputspeichFormatierung()
Dim AbisZ As Long
Dim W As Double
AbisZ = Sheets(1).Range("A2").End(xlDown).Row
For i = 2 To AbisZ
W = CDbl(Replace(Sheets(1).Cells(i, 1).Value, " MB", ""))
Select Case W
Case 0 To 512
Sheets(1).Cells(i, 1).Value = 512
Case 512 To 1024
Sheets(1).Cells(i, 1).Value = 1024
End Select
Next
End Sub

Anzeige
Die mögliche ZellFormel (mit UDF) ...
13.10.2014 16:59:56
Luc:-?
B1[:B10]:=VRUNDEN(AUFRUNDEN(--Splint(WECHSELN(A1;".";"");;1;1);0);512)
…kann in eine VBA-SubProzedur wie folgt eingebunden wdn (noch auf deine speziellen Verhältnisse anzupassen!):
Sub MB_Runden()
Const adRelBer$ = "A1:A10"
Dim ix As Long, avRelBer, vKap, xW As Variant, relBer As Range, wf As WorksheetFunction
Set wf = WorksheetFunction
Set relBer = Range(adRelBer): avRelBer = wf.Transpose(relBer)
ReDim vKap(UBound(avRelBer) - LBound(avRelBer))
For Each xW In avRelBer
vKap(ix) = wf.MRound(wf.RoundUp(Split(Replace(xW, ".", ""))(0), 0), 512)
ix = ix + 1
Next xW
relBer = wf.Transpose(vKap): relBer.NumberFormat = "#.##0\ \M\B"
Set relBer = Nothing: Set wf = Nothing
End Sub
Gruß, Luc :-?
Besser informiert mit …

Anzeige
Falls auch reine 0-Werte berücksichtigt wdn ...
13.10.2014 18:43:39
Luc:-?
…sollen, Riman,
müsste (bzw könnte) die genannte Fml (bei Verkürzung durch Einsatz der ursprünglichen als benannte Fml) allerdings wie folgt lauten:
B1[:B10]:=GANZZAHL(MAX(Runden512MB;512/(1+512*(Runden512MB=0))))
…für Runden512MB: =VRUNDEN(AUFRUNDEN(--Splint(WECHSELN(A1;".";"");;1;1);0);512)
Der entsprd Teil der SubProzedur sähe dann so aus:
    For Each xW In avRelBer
vKap(ix) = wf.MRound(wf.RoundUp(Split(Replace(xW, ".", ""))(0), 0), 512)
vKap(ix) = wf.Max(vKap(ix), 512 \ (1 + 512 * Abs(vKap(ix) = 0))): ix = ix + 1
Next xW
Das setzt natürlich voraus, dass stets auf ein Vielfaches von 512 aufgerundet wdn soll!
Luc :-?

Anzeige
AW: nochmal ne grundsätzliche Verständnis
13.10.2014 17:11:42
Daniel
frage:
auf was soll denn aufgerundet werden:
a) ein vielfaches von 512 (512-1024-1536-2048-2560-...
b) die 2er-Potzenzreihe ab 2^9 (512-1024-2048-4096-8192...
c) auf eine andere Reihe, die sich nicht berechnen lässt sondern die du vorgibst.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige