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

Formel in Makro mit Bedingungen

Formel in Makro mit Bedingungen
19.03.2015 04:24:47
buia2002
Hallo Leute,
ich bin am verzweifeln. Habe mich bei einer Makro bis jetzt durchs Internet gebissen, aber nun komme ich nicht mehr weiter. Ich will in meiner (Beispiel)-Tabelle 3 Spalten miteinander multiplizieren und danach durch 5000 teilen oder die 3 Spalten von cm auf m umrechnen, diese dann miteinander multiplizieren und dann nochmal mit 200 multiplizieren. Dies ist aber abhängig von 2 Bedinungen, die eine Bedinung ist variabel und die andere fix, d. h. für meine Beispieltabelle:
A:
Ich will die Spalten D, E und F miteinander multiplizieren und danach durch 5000 teilen, wenn
1. in Spalte A die gleiche Referenz steht (diese wiederholt sich nicht, sondern ist immer fortlaufend, ich kann also nicht mit Festtexten arbeiten "A")
und
2. in Spalte B der Dienstleister DHL ist.
B:
Ich will die Spalten D, E und F von Zentimeter auf Meter umrechnen, diese dann multiplizieren und danach nochmal mit dem Wert 200, wenn
1. in Spalte A die gleiche Referenz steht (diese wiederholt sich nicht, sondern ist immer fortlaufend, ich kann also nicht mit Festtexten arbeiten "A")
2. in Spalte B der Dienstleister TNT ist.
C:
UPS soll ignoriert werden
Am schluss sollen dann die Einzelergebnisse pro Referenz aufaddiert werden
Ich bräuchte dies als VBA-Code, da dieser in eine Makro eingebaut wird. Da die doppelten Referenzzeilen am Schluss gelöscht werden, wäre es gut wenn, dass Ergebnis in jeder Zeile pro Referenz stehen würde.
Ich hoffe ich habe es verständlich erklärt und ihr könnt mir helfen.
Ich hänge auch eine Ergebnis Datei an wie es zum Schluss ausschauen soll.
Bitte nicht irritieren lassen, dass bei beiden Rechenwegen, also DHL und TNT die gleichen Ergebnisse herauskommen. Es sind verschiedene Rechenwege und die Parameter (5000 und 200) können sich jederzeit ändern
Vielen Dank
https://www.herber.de/bbs/user/96478.xlsx
https://www.herber.de/bbs/user/96479.xlsx

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in Makro mit Bedingungen
19.03.2015 08:48:40
Jack_d
Moin Moin
also was du mit
" in Spalte A die gleiche Referenz steht (diese wiederholt sich nicht, sondern ist immer fortlaufend, ich kann also nicht mit Festtexten arbeiten "A")"
meinst, kann ich nicht einordnen (Ergibt sich für mich auch nicht aus deinen Mappen. Das könntest du ja bei Gelegenheit mal erläutern.
Ansonsten Hier mal eine kleine Prozedur die zumindest das macht, was du willst (sofern ich das verstanden hab, und ohne Rücksicht auf das Kriterium in Spalte A)
Übrigens. Die Formel bei TNT ist kein Tipfehler (lediglich mathematisch gekürzt)
Sub rechnung()
With Worksheets("Tabelle1")
For i = 1 To .Cells(Rows.Count, 2).End(xlUp).Row
Select Case .Cells(i, 2)
Case Is = "TNT"
.Cells(i, 8) = (.Cells(i, 4) + .Cells(i, 5) * .Cells(i, 6)) / 5000
Case Is = "DHL"
.Cells(i, 8) = (.Cells(i, 4) + .Cells(i, 5) * .Cells(i, 6)) / 5000
Case Is = "UPS"
End Select
Next i
End With
End Sub
Grüße

Anzeige
AW: Formel in Makro mit Bedingungen
20.03.2015 15:18:40
buia2002
Hallo jack_D,
vielen Dank für Deine schnelle Antwort.
Dein code hat mir schon sehr geholfen. Habe an deinen code noch ein Stück drangehangen, der mir die variable Bedingung (Referenz) berechnet.
" in Spalte A die gleiche Referenz steht (diese wiederholt sich nicht, sondern ist immer fortlaufend, ich kann also nicht mit Festtexten arbeiten "A")"
heißt, dass in der Referenzspalte nicht immer z. B. "m" für männlich oder "w" weiblich steht, also kein fixer Parameter, sondern diese Referenz ist fortlaufend und eindeutig. Ich konnte also nicht wie bei der Spalte Dienstleister als fixer Text "TNT" oder "DHL" in die Makro eintragen.
Ich hoffe Du hast mich jetzt verstanden.
Allerdings brauch ich noch bei TNT den "umständlichen" Rechenweg als Makroformel, da ich nur die Parameter ändern will, wenn sich bei diesen etwas ändert. Da probier ich aber auch selber noch rum, das sollte ich hoffentlich noch hinbekommen.
LG
P.S.: Die zwei "+" waren wahrscheinlich nur ein Test, ob ich auch aufpass. :-)
Nur Spaß
Vielen, vielen Dank nochmal

Sub rechnung()
With Worksheets("Tabelle1")
For i = 1 To .Cells(Rows.Count, 2).End(xlUp).Row
Select Case .Cells(i, 2)
Case Is = "TNT"
.Cells(i, 8) = (.Cells(i, 4) * .Cells(i, 5) * .Cells(i, 6)) / 5000
Case Is = "DHL"
.Cells(i, 8) = (.Cells(i, 4) * .Cells(i, 5) * .Cells(i, 6)) / 5000
Case Is = "UPS"
End Select
Next i
End With
Dim LR
On Error GoTo Fehler
Columns("H").Insert Shift:=xlToRight
Columns("A:A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"H2"), Unique:=True
Columns("H:H").Select
Selection.NumberFormat = "General"
LR = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Range("H2:H" & LR).FormulaLocal = "=SUMMEWENN($A:$A;$A2;I:I)"
Range("H:H").Copy
Range("H:H").PasteSpecial Paste:=xlPasteValues
Range("H1").Copy Range("AL1")
Columns("I").Delete Shift:=xlToLeft
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige