Supportnet Computer
Planet of Tech

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

Antwort 2 von CaroS

Hallo Asperitas,
Zitat:
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

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

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

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

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

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

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

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

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


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


Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: