Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1320to1324
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

Werte aus dynamischer Liste berechnen ...

Werte aus dynamischer Liste berechnen ...
28.06.2013 09:11:43
Karsten
Hallo liebe Excel-Experten,
dies ist mein erster Post, daher möchte ich zunächst einmal HALLO sagen
Ich habe ein Problem, welches ich gerne in VBA lösen möchte.
Userbild
Ich habe eine dynamische Liste in den Spalten B, C und D. Die Spalten sind fix, jedoch ist die Anzahl der Zeilen dynamisch, die Struktur der Spalte C bleibt jedoch fix. D.h., wenn in Spalte B ein mögliches Element hinzukommt, dann hat dieses Element in Spalte C wieder die Werte TEST 1 bis TEST 4.
Was ich jetzt tun möchte, ist unabhängig von der Länge der Liste, alle Werte für TEST 1 aufzusummieren und als Ergebnis in die Spalte G4 zu schreiben. Für TEST 2 (Zelle G5) möchte ich alle TEST 2 Werte aufsummieren und durch die Summe aller TEST 1 Werte dividieren. Analog dazu die Werte für TEST 3 und TEST 4, jeweils als Summe durch die Summe von TEST 1 dividiert. Wenn jedoch die Struktur TEST 1 bis TEST 4 nur einmal vorkommt, möchte ich die Werte 1:1 in die Ergebnisspalte (G4:G7) übernehmen.
Könnte mir bitte jemand einen Tip geben, wie ich das machen könnte?
Vielen lieben Dank im Vorraus,
Karsten

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus dynamischer Liste berechnen ...
28.06.2013 09:35:29
Rudi
Hallo,
wozu VBA? Geht doch auch einfachst mit Formeln.
Sub Karsten()
Range("G4") = WorksheetFunction.SumIf(Range("C:C"), Range("F4"), Range("D:D"))
Range("G5") = WorksheetFunction.SumIf(Range("C:C"), Range("F5"), Range("D:D")) / _
IIf(WorksheetFunction.CountIf(Range("C:C"), Range("F4")) > 1, Range("G4"), 1)
Range("G6") = WorksheetFunction.SumIf(Range("C:C"), Range("F6"), Range("D:D")) / _
IIf(WorksheetFunction.CountIf(Range("C:C"), Range("F4")) > 1, Range("G4"), 1)
Range("G7") = WorksheetFunction.SumIf(Range("C:C"), Range("F7"), Range("D:D")) / _
IIf(WorksheetFunction.CountIf(Range("C:C"), Range("F4")) > 1, Range("G4"), 1)
End Sub

Gruß
Rudi

Anzeige
AW: Werte aus dynamischer Liste berechnen ...
28.06.2013 10:09:31
Karsten
Hallo Rudi,
vielen Dank, funktioniert perfekt. Hätte nicht gedacht, dass das so einfach ist :)
Kann man sowas eigentlich auch mit Schleifen "abfrühstücken"?
Lieber Gruss,
Karsten

Kleines Frühstück ohne Schleifchen
28.06.2013 10:39:51
NoNet
Hallo Karsten,
erstmal Willkommen hier im Forum ! - Für einen "Neueinsteiger" hast Du schon einen sehr professionellen Post erstellt - Glückwunsch :-) !
Zu Deinem "verschleiften Frühstück" : Ich biete Dir auf die Schnelle lediglich ein "kleines Frühstück - ohne Schleifchen" an - die Funktionen zum Berechnen werden dabei direkt in die Zellen geschrieben :
Sub Karsten_Fruehstueck()
[G4].Formula = "=Sumif(C:C,F4,D:D)"
[G5:G7].Formula = "=Sumif(C:C,F5,D:D)/IF(Countif(C:C,F5)>1,G$4,1)"
End Sub
Gruß, NoNet

Anzeige
AW: Kleines Frühstück ohne Schleifchen
28.06.2013 11:08:07
Karsten
Hallo NoNet,
vielen Dank für Deine Mühe und für Deine Willkommengrüsse :)
Die Lösung funktioniert zwar, ich kann diese aber leider nicht benutzen. Es handelt sich bei diesem Report um einen SAP Report, der alle Formeln in den Zellen überschreibt, sobald er Daten aus der DB holt. Daher muss ich leider die Werte direkt in die Zellen schreiben, ohne Formeln. Das ganze natürlich noch dynamisch, da die Länge der Liste variiert.
Liebe Grüsse,
Karsten

Frühstück ohne Schleifchen - aber bitte mit Sahne
28.06.2013 11:26:25
NoNet
Hallo Karsten,
dann erweitere ich mein Frühstücksangebot um ein kleines "Sahnehäubchen" - wohl bekomm's :
Sub Karsten_Fruehstueck_mit_Sahnehaeubchen()
Dim rngB As Range
Set rngB = [G4:G7] 'Bereichsangabe für die Funktionen/Werte
rngB(1).FormulaR1C1 = "=Sumif(C3:C3,RC[-1],C4:C4)" 'C3 und C4 stehen für Spalte C und D !
rngB.Offset(1).Resize(rngB.Rows.Count - 1).FormulaR1C1 = _
"=Sumif(C3:C3,RC[-1],C4:C4)/IF(Countif(C3:C3,RC[-1])>1,R4C,1)"
rngB.Value = rngB.Value 'Sahnehäubchen : Formeln durch Werte ersetzen
End Sub
Gruß, NoNet

Anzeige
AW: Frühstück ohne Schleifchen - aber bitte mit Sahne
28.06.2013 11:53:27
Karsten
Hallo NoNet,
absolut perfekt, danke Dir ;)
Dürfte ich Dich vielleicht noch um die Erdbeere auf dem Sahnehäubchen bitten? :)
Ich weiss natürlich, dass Du mir schon sehr geholfen hast, aber vielleicht hast Du ja noch Lust und Musse :)
Hier das Problem:
Basis- und Ergebniswerte befinden sich in unterschiedlichen Worksheets, aber der gleichen Mappe, haben aber mehrere Spalten, auf die die komplette Logik jeweils angewendet werden muss. Hier ein kleines Bild, wie es aussieht:
In Worksheet 1 sollen die Ergebnisse geschrieben werden.
Userbild
Vielen lieben Dank,
Karsten
Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige