Nachdem der Fragesteller zuletzt online war, nachdem Gast123 seine Lösung gepostet hat, ohne eine Antwort zu geben, gehe ich mal davon aus, dass wir von dem nichts mehr hören.
Hallo zusammen,
Sorry, ich war jetzt beruflich im Ausland.
Ich brauche die Wertänderung, weil das Programm nur bis 200,0000 annimmt. Deswegen müssen alle Werte geändert werden.
Gast 123 hat es richtig erkannt. 200/endsumme.
die Frage ist, wie bekomme ich das in VBA hin denn ich draf keine Hilfsspalte nutzen.
Alle Werte müssen immer ,0000 sein
Sorry das ich nicht früher melden konnte, so spontan weg musste ich noch nie.
Achtung, dieser Code überschreibt die Werte in Spalte A in gewünschter Weise.
Code:
Sub test()
Dim Summe As Double, Faktor As Double, i As Integer, letzte As Integer
With Sheets("Tabelle1")
letzte = .Cells(.Rows.Count, "A").End(xlUp).Row
Summe = Application.WorksheetFunction.Sum(Sheets("Tabelle1").Range("A2:A" & letzte))
Faktor = 200 / Summe
For i = 2 To letzte
.Cells(i, "B") = .Cells(i, "A") * Faktor
Next i
End With
End Sub
Beachte außerdem, dass es keine Gesamtsumme unter den Werten geben darf, da diese sonst natürlich das Ergebnis verfälschen würde. Soll heißen, es dürfen in der Liste nur die zu verändernden Werte stehen. Sollte eine Gesamtsumme vorhanden sein, ändere die Zeile
Code:
letzte = .Cells(.Rows.Count, "A").End(xlUp).Row
in
Code:
letzte = .Cells(.Rows.Count, "A").End(xlUp).Row - 1
Nachtrag:
Das Ganze geht natürlich auch flott ganz ohne VBA. Rechne in einer beliebigen Zelle den Faktor aus, sprich 200/Gesamtsumme_alte_Werte. Kopiere nun genau diese Zelle und markiere danach die Liste mit den Einzelwerten (nur markieren, sonst nichts machen).
Nun wähle im Register Start den kleinen Pfeil unterhalb des Einfügen-Buttons und wähle "Inhalte einfügen". Markiere die Punkte "Werte" und "Multiplizieren" --> Ok. Somit wurden alle alten Werte mit dem Faktor multipliziert. Die Hilfszelle kannst du wieder löschen.
Hallo MisterBurns,
es klappt super. Dankeschön
Nur noch ein Problem
Alle zahlen sind z.B. 0,16383874
zum einlesen darf es nur vier Stellen nach Komma sein.
Auch wenn ich Zellen Formation mache , Zahl nach vier Dezimalstellen ändere ich nur das aussehen.
Ich kann nämlich nur vier stellig nach Komma einfügen.
Ersetze die Zeile
Code:
.Cells(i, "B") = .Cells(i, "A") * Faktor
durch
Code:
.Cells(i, "B") = Application.WorksheetFunction.Round((.Cells(i, "A") * Faktor), 4)