Supportnet / Forum / Tabellenkalkulation
VBA code
Frage
Hallo VBA-Profis!
Bin leider noch wenig erfahren im Umgang mit VBA und habe mein Problem in folgendem (leider langem) Beispiel dargestellt:
In einer Excel-Tabelle habe ich Produkte zu Produktgruppen zusammengefasst, wobei die Anzahl der Produkte in einer Gruppe von Jahr zu Jahr variiert.
Im Jahr XY sind 6 identische Produkte in einer Gruppe und die Tabelle zeigt mir an, dass ich im 1. Quartal 4, im 2. Quartal 3, im 3. Quartal 2 und im 4.Quartal 1 Produkte Erlöse erzielt haben. Jedes Produkt verursacht verbrauchsabhängige variable Kosten und fixe Kosten un-abhängig vom Verbrauch. Momentan rechnet mir Excel aus, ob die Erlöse ALLER 6 Produk-te die variablen und fixen Kosten ALLER 6 Produkte decken können.
Nun möchte ich die variablen und fixen Kosten für den Verbrauch jedes EINZELNEN Pro-duktes ausrechnen ohne dabei ein weiteres Tabellenblatt zu benutzen, da die Anzahl der Produkte ständig variiert und ich noch andere Produktgruppen habe.
Könnte man das über eine Schleife in VBA lösen? Die Anzahl der Schleifendurchgänge ent-spricht dabei der Anzahl Produkte in der Gruppe. Der 1. Durchlauf prüft dann, in wieviel Quartalen es benutzt wurde und rechnet die variablen und fixen Kosten aus:
1. Quartal=4 ; 2. Quartal=3 ; 3.Quartal=2 ; 4.Quartal=1
-> Produkt 1 wurde in allen Quartalen benutzt.
Im 2. Durchlauf muss man den ersten Durchlauf berücksichtigen: Im 1. Quartal: 4-1=3 ; 2. Quartal: 3-1=2 ; 3. Quartal: 2-1=1 ; 4. Quartal: 1-1=0
-> Produkt Nummer 2 wurde also nur in 3 Quartalen benutzt.
3.-6. Durchlauf analog.
Wie kann ich das in einen VBA.code ausdrücken? In meiner Excel-Tabelle soll in der letzten Spalte nur gezeigt werden, wieviel Produkte meiner Produktgruppe ihre Kosten nicht decken können. Ist das überhaupt lösbar?
Vielen Dank für Eure Mühe!!!!!
Asperitas
Antwort 1 von Saarbauer
hallo,
da der Tabellenaufbau unbekannt ist, nur allgemein. Könnte mit Summenprodukt zu lösen sein.
Vielleicht kannst du hier eine Beispieldatei einstellen
http://www.netupload.de/
Den Link zur Datei hier hinterlegen
Gruß
Helmut
da der Tabellenaufbau unbekannt ist, nur allgemein. Könnte mit Summenprodukt zu lösen sein.
Vielleicht kannst du hier eine Beispieldatei einstellen
http://www.netupload.de/
Den Link zur Datei hier hinterlegen
Gruß
Helmut
Antwort 2 von CaroS
Hallo Asperitas,
Eindeutig ja, und sogar sehr gut. Allerdings bräuchte man für die Realisierung genauere Angaben, was wo steht, welche Ergebnisse wo eingetragen werden sollen. Das beste wäre, Du würdest eine Beispiel-Datei zur Verfügung stellen (http://www.netupload.de/,
http://www.uploadagent.de/). Darin müssen nicht unbedingt echte Daten enthalten sein, sondern nur ähnlich verständliche und aussagekräftige.
Gruß,
CaroS
Zitat:
Könnte man das über eine Schleife in VBA lösen? ... Ist das überhaupt lösbar?
Könnte man das über eine Schleife in VBA lösen? ... Ist das überhaupt lösbar?
Eindeutig ja, und sogar sehr gut. Allerdings bräuchte man für die Realisierung genauere Angaben, was wo steht, welche Ergebnisse wo eingetragen werden sollen. Das beste wäre, Du würdest eine Beispiel-Datei zur Verfügung stellen (http://www.netupload.de/,
http://www.uploadagent.de/). Darin müssen nicht unbedingt echte Daten enthalten sein, sondern nur ähnlich verständliche und aussagekräftige.
Gruß,
CaroS
Antwort 3 von Asperitas
Hier ist mein Beispiel: http://www.netupload.de/detail.php?img=4321c9efcdbae1561938a9295236e43c.xls
Viel Dank, Asperitas
Viel Dank, Asperitas
Antwort 4 von Saarbauer
Hallo,
stehen die übrigen Daten, zu B und C in der gleichen sortiert Liste ?
für dein Beispiel ging es mit
=WENN(L4<0;B4 & " Stück, davon sind " & ZÄHLENWENN(Einzeln!M4:M9;"unrentabel") & " Stück unrentabel";"Profit")
in Zelle M4
Für die übrigen wäre es entsprechend zu überarbeiten.
Gruß
Helmut
stehen die übrigen Daten, zu B und C in der gleichen sortiert Liste ?
für dein Beispiel ging es mit
=WENN(L4<0;B4 & " Stück, davon sind " & ZÄHLENWENN(Einzeln!M4:M9;"unrentabel") & " Stück unrentabel";"Profit")
in Zelle M4
Für die übrigen wäre es entsprechend zu überarbeiten.
Gruß
Helmut
Antwort 5 von Asperitas
Hallo Saarbauer!
das Tabellenblatt Einzeln exisitiert in meiner wirklichen Datei gar nicht, da die Zeilen sich dynamisch verändern, je nachdem wieviel Produkte eine Gruppe enthält. Es sollte nur beispielhaft zeigen, wie die Berechnung wirklich sein sollte. Ich will versuchen, den Umweg über dieses Hilfsblatt Einzeln zu vermeiden und das müßte doch mittels VBA-code machbar sein, oder?
Gruß, Asperitas
das Tabellenblatt Einzeln exisitiert in meiner wirklichen Datei gar nicht, da die Zeilen sich dynamisch verändern, je nachdem wieviel Produkte eine Gruppe enthält. Es sollte nur beispielhaft zeigen, wie die Berechnung wirklich sein sollte. Ich will versuchen, den Umweg über dieses Hilfsblatt Einzeln zu vermeiden und das müßte doch mittels VBA-code machbar sein, oder?
Gruß, Asperitas
Antwort 6 von Saarbauer
Hallo,
es wäre besser gewesen deine richtigen Tabellenaufbau einzustellen, denn nur so ist eine Lösung hinzukriegen.
Diese Abwandlung hat auf einen falschen Lösungsweg geführt.
Sicher ist es auch mit VBA hinzukriegen, aber dazu braucht man den Dateiaufbau.
Deine Beispieldatei ist wie Ich habe z.B. Birnen und Äpfel, jetzt möchte ich eine Kartoffelsuppe kochen , meine tatsächlich vorkhandenen Zutaten verrate ich aber nicht.
Gruß
Helmut
es wäre besser gewesen deine richtigen Tabellenaufbau einzustellen, denn nur so ist eine Lösung hinzukriegen.
Diese Abwandlung hat auf einen falschen Lösungsweg geführt.
Sicher ist es auch mit VBA hinzukriegen, aber dazu braucht man den Dateiaufbau.
Deine Beispieldatei ist wie Ich habe z.B. Birnen und Äpfel, jetzt möchte ich eine Kartoffelsuppe kochen , meine tatsächlich vorkhandenen Zutaten verrate ich aber nicht.
Gruß
Helmut
Antwort 7 von Asperitas
Hallo Helmut,
da haben wir uns wohl mißverstanden. Meine Datei ist genauso wie das Tabellenblatt "Gruppe" aufgebaut; führte aber zu falschen Ergebnissen.
Das Blatt "Einzel" soll in dem Beispiel nur zeigen, wie die Berechnung per VBA aussehen sollen und dass man zu anderen Ergebnissen gelangt, wenn man die Produkte einzeln betrachtet.
Ich kann aber kein solches Hilfsblatt integrieren, da die Anzahl der Produkte in einer Gruppe von Jahr zu Jahr varriiert.
Trotzdem danke für Deine Mühe!
Asperitas
da haben wir uns wohl mißverstanden. Meine Datei ist genauso wie das Tabellenblatt "Gruppe" aufgebaut; führte aber zu falschen Ergebnissen.
Das Blatt "Einzel" soll in dem Beispiel nur zeigen, wie die Berechnung per VBA aussehen sollen und dass man zu anderen Ergebnissen gelangt, wenn man die Produkte einzeln betrachtet.
Ich kann aber kein solches Hilfsblatt integrieren, da die Anzahl der Produkte in einer Gruppe von Jahr zu Jahr varriiert.
Trotzdem danke für Deine Mühe!
Asperitas
Antwort 8 von Saarbauer
Hallo,
dann sind deine Dateien (hier Tabelenblatt "Einzel") wahrscheinlich eigene Dateien oder?
Aber auch dann wäre es mit entsprechenden Verknüfungen zu machen,
Gruß
Helmut
dann sind deine Dateien (hier Tabelenblatt "Einzel") wahrscheinlich eigene Dateien oder?
Aber auch dann wäre es mit entsprechenden Verknüfungen zu machen,
Gruß
Helmut
Antwort 9 von Asperitas
ja, das Blatt einzeln habe ich nur für das Beispiel hinzugefügt.
Aber wenn Du vorschlägst, es mit Verknüpfungen zu machen, bedeutet das, dass ich um das zusätzliche Blatt mit der Einzelauflistung der Produkte nicht herumkomme?
Wie kann ich dann Zeilen dynamisch darstellen? In diesem Jahr habe ich 10 Produkte von Typ XY, dann füge in Blatt einzeln 10 Zeilen ein und nummeriere diese von 1-10. Im nächsten Jahr habe ich 20 Produkte von diesem Typ - also füge 20 Zeilen in das Hilfsblatt ein. das muss nämlich automatisch funktionieren, weil der Rest meiner Excel-Datei auch automatsich über makros funktioniert und am Ende nur Graphiken gezeigt werden.
Sorry, für das komplizierte Problem!
LG, Asperitas
Aber wenn Du vorschlägst, es mit Verknüpfungen zu machen, bedeutet das, dass ich um das zusätzliche Blatt mit der Einzelauflistung der Produkte nicht herumkomme?
Wie kann ich dann Zeilen dynamisch darstellen? In diesem Jahr habe ich 10 Produkte von Typ XY, dann füge in Blatt einzeln 10 Zeilen ein und nummeriere diese von 1-10. Im nächsten Jahr habe ich 20 Produkte von diesem Typ - also füge 20 Zeilen in das Hilfsblatt ein. das muss nämlich automatisch funktionieren, weil der Rest meiner Excel-Datei auch automatsich über makros funktioniert und am Ende nur Graphiken gezeigt werden.
Sorry, für das komplizierte Problem!
LG, Asperitas
Antwort 10 von Saarbauer
Hallo,
du hast eine Datei in der die Produkte der Gruppe A aufgelistet sind, in unserem Fall 6 und eine Liste in dem die Gruppen sind A bis ???, hier 3.
Jetzt wilst du aus der Datei A (Produkte der Gruppe A ) das Ergbnis der Einzelbewertungen (rentabel / unrentabel) in die Gruppenliste als Gesamtergebnis übernehmen (für Produkte der Gruppe A 4 unrentabel).
Habe ich das richtig verstanden.
Gruß
Helmut
du hast eine Datei in der die Produkte der Gruppe A aufgelistet sind, in unserem Fall 6 und eine Liste in dem die Gruppen sind A bis ???, hier 3.
Jetzt wilst du aus der Datei A (Produkte der Gruppe A ) das Ergbnis der Einzelbewertungen (rentabel / unrentabel) in die Gruppenliste als Gesamtergebnis übernehmen (für Produkte der Gruppe A 4 unrentabel).
Habe ich das richtig verstanden.
Gruß
Helmut
Antwort 11 von Asperitas
Hallo Helmut!
Vielen Dank noch mal für Deine Bemühungen. In ner langen Nachtschicht habe ich das Problem nun doch selbst können: ich musste nur den JAVA-code ins VBA übersetzen.
Jetzt zeigt mir Excel in nur einer Zelle, dass 4 Produkte unrentabel sind.
Zur Vollständigkeit stell ich den Code ins Forum, falls jemand mal ein ähnliches Problem haben sollte.
Gruß, Asperitas
Vielen Dank noch mal für Deine Bemühungen. In ner langen Nachtschicht habe ich das Problem nun doch selbst können: ich musste nur den JAVA-code ins VBA übersetzen.
Jetzt zeigt mir Excel in nur einer Zelle, dass 4 Produkte unrentabel sind.
Zur Vollständigkeit stell ich den Code ins Forum, falls jemand mal ein ähnliches Problem haben sollte.
Gruß, Asperitas
Sub Test()
Dim i As Integer
Dim AnzahlProdukte As Integer
Dim Stück As Integer
Dim varK As Double
Dim FixK As Double
Dim Preis As Double
Dim Profit As Double
Dim ProfitQ1 As Double
Dim ProfitQ2 As Double
Dim ProfitQ3 As Double
Dim ProfitQ4 As Double
Dim Q1 As Integer
Dim Q2 As Integer
Dim Q3 As Integer
Dim Q4 As Integer
Dim Unrentabel As Integer
Dim SummeUnrentabel As Integer
AnzahlProdukte = Range("B4").Value
Stück= 1
varK = Range("C4").Value
FixK = Range("D4").Value
Preis = Range("E4").Value
Q1 = Range("F4").Value
Q2 = Range("G4").Value
Q3 = Range("H4").Value
Q4 = Range("I4").Value
For i = 0 To AnzahlProdukte - 1
If Q1 >= Stück+ i Then ProfitQ1 = (Preis - varK) * Stück Else ProfitQ1 = 0
If Q2 >= Stück + i Then ProfitQ2 = (Preis - varK) * Stück Else ProfitQ2 = 0
If Q3 >= Stück+ i Then ProfitQ3 = (Preis - varK) * Stück Else ProfitQ3 = 0
If Q4 >= Stück + i Then ProfitQ4 = (Preis - varK) * Stück Else ProfitQ4 = 0
Profit = ProfitQ1 + ProfitQ2 + ProfitQ3 + ProfitQ4 - FixK
If Profit < 0 Then Unrentabel = 1 Else Unrentabel = 0
SummeUnrentabel = Unrentabel + SummeUnrentabel
Next i
ActiveCell.Offset(10 + i, 3) = SummeUnrentabel
End Sub
