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

%-Rechnen

%-Rechnen
Mandy
Hi,
ich möchte in Excel mehrere Zellen per Makro berechnen. Dazu habe ich in C verschiedene Summen und möchte in D jeweils dahintern einen bestimmten Wert ausrechenn.
Es sollen % ausgerechnet werden. In Zelle A1 habe ich eine Prozentzahl stehen.
Nun soll jeweils in D aus den Summen ein Prozentwert gerechnet werden.
Beispiel, wenn in A1 = 5 steht, soll in D1 5 % von C1 gerechnet werden.
Das Problem dabei, in A1 kann evt. nur eine "5" stehn, oder auch "5%" (wird vom user eingetragen)
trotzdem soll gerechnet werden.
Hat da jemand eine Idee ?
Danke
Mandy

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: %-Rechnen
15.07.2009 09:23:37
Wolli
Hallo Mandy, dafür brauchst Du kein VBA. Trage in D1 einfach die Formel
=WENN(A1>1;A1*C1/100;A1*C1)
ein.
Tipp: Wenn Du bereits im Vorfeld die Zelle A1 als "Prozent" formatierst, kann der Benutzer ruhig "5" eingeben, dann steht in der Zelle trotzdem "5%" (=0,05) und die Formel ist einfachh "=A1*C1"
Gruß, Wolli
Danke, soll aber per Makro gerechnet werden..
15.07.2009 09:26:31
Mandy
..hi,
Danke, ich brauche aber ein Makro. Geht das nicht ?
Gruss
Mandy
data validation
15.07.2009 09:37:46
Florian
Hi Mandy,
schau doch mal nach der Data Validation. Da verhinderst Du, dass einmal %, einmal keine % eingegeben werden können.
Gruss Florian
Doch, das geht:
15.07.2009 09:41:22
Wolli

Sub Prozente_berechnen()
Dim c As Range
'Durch alle Zellen innerhalb von Spalte D im benutzten Bereich gehen
For Each c In Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns(4))
'Sicherstellen, dass in Spalte A und Spalte C ein Wert steht
If (Not (IsEmpty(c.Offset(0, -3)))) And (Not (IsEmpty(c.Offset(0, -1)))) Then
'Sofern ein Prozentformat in Spalte A definiert ist, ohne 100 rechnen,
'sonst durch 100 teilen.
If InStr(CStr(c.Offset(0, -3).NumberFormat), "%")  0 Then
c = c.Offset(0, -3) * c.Offset(0, -1)
Else
c = c.Offset(0, -3) * c.Offset(0, -1) / 100
End If
End If
Next c
End Sub
Gruß, Wolli
Anzeige
Kl. Ergänzung
15.07.2009 09:44:16
Wolli
So:
Sub Prozente_berechnen()
Dim c As Range
'Durch alle Zellen innerhalb von Spalte D im benutzten Bereich gehen
For Each c In Intersect(ActiveSheet.UsedRange, ActiveSheet.Columns(4))
'Sicherstellen, dass in Spalte A und Spalte C ein Wert steht
If (Not (IsEmpty(c.Offset(0, -3)))) And (Not (IsEmpty(c.Offset(0, -1)))) Then
'Sofern ein Prozentformat in Spalte A definiert ist, ohne 100 rechnen,
'sonst durch 100 teilen.
If InStr(CStr(c.Offset(0, -3).NumberFormat), "%")  0 Then
c = c.Offset(0, -3) * c.Offset(0, -1)
Else
c = c.Offset(0, -3) * c.Offset(0, -1) / 100
End If
Else
'Wenn einer der Werte leer ist,
'auch das Ergebnis löschen
c.ClearContents
End If
Next c
End Sub

Anzeige
AW: Danke, soll aber per Makro gerechnet werden..
15.07.2009 09:43:56
susanne
Hallo Mandy
mach doch einfach mal die Eingaben und lass wärenddessen den
Makrorecorder laufen, dann siehst Du wie der entsprechende Code aussehen muss.
susanne
Lt deinem Level kannst du doch den...
15.07.2009 09:55:08
Luc:-?
...Makrorecorder bedienen, Mandy,
dann wirf ihn mal an und führe dabei Folgendes aus...
1. A1 kopieren und in D1 einfügen.
2. C1 kopieren, Inhalte einfügen - Multiplizieren wählen und auf D1 kopieren.
Fertig! Du erhältst dann so etwas...

Sub Makro1()
Range("A1").Select
Application.CutCopyMode = False
Selection.Copy
Range("D1").Select
ActiveSheet.Paste
Range("C1").Select
Application.CutCopyMode = False
Selection.Copy
Range("D1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
End Sub
Das ist natürlich ein Unding! Also kürzen...

Range("D1") = Range("A1") * Range("C1")
...ist dann alles, was innerhalb der Prozedur übrig bleibt. Wenn du die Bereiche noch in Variablen einliest, wird's etwas universeller. Du könntest das dann zyklisch für viele Zellen auf einmal machen, denn so lohnt sich das doch nicht wirklich — oder...?! ;-)
Vielleicht solltest du uns noch etwas über deine "Makro-Beweggründe" verraten...
Gruß Luc :-?
Anzeige
Danke an Alle, habe e sgeschaft :-)
16.07.2009 08:43:49
Mandy

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige