Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
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

variable Bereich (Summ) VBA

variable Bereich (Summ) VBA
27.07.2015 18:43:15
hachim

Hallo zusammen,
ich bin ein Anfänger bei VBA und habe ein Problem, wo Ihr mir vllt dabei helfen könntet.
wie unten auf dem Bild zu sehen ist, habe ich drei spalte. in der ersten Spalte gibt es n Typen (Variable). das heisst jedes mal kann sich die Anzahl der A-Typ (B,C...Typ ändern.
für jeden Typ wird einen wert in der Spalte B ausgegben. Die summe alle dieser Werte (zb. hier für A-typ von B2-B6, für B-Typ von B7-B10 usw) soll in Spalte C für jeden Typ gleich sein. (wie im Bild dargestellt).
PS: es muss via VBA gelöst werden :)
kann mir jemand mit einem bespiel für ein VBA-Code für die Lösung helfen?
vielen Dank im Voraus.
Grüße
Hachim
Userbild

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
doppelt, siehe oben oT
27.07.2015 19:00:32
robert

AW: variable Bereich (Summ) VBA
27.07.2015 19:04:22
Daniel
Hi
das macht man am einfachsten mit SummeWenn, auch in VBA:
with Range("C2:C" & Cells(rows.count, 2).end(xlup).Row)
.FormulaR1c1 = "=SumIf(C1,RC1,C2)"
.Formula = .Value
End with
oder etwas rechenzeitoptimiert, wenn die Tabelle sortiert ist:
with Range("C2:C" & Cells(rows.count, 2).end(xlup).Row)
.FormulaR1c1 = "=IF(RC1=R[-1]C1,R[-1]C,SumIf(C1,RC1,C2))"
.Formula = .Value
End with
Als "reine" VBA-Lösung vielleicht so:
dim arr1, arr2
dim z as long
dim dicSum as Object
set dicSum = CreateObject("Scripting.Dictionary")
arr1 = Cells(1, 1).CurrentRegion.Value
redim arr2(1 to Ubound(arr1, 1), 1 to 1)
for z = 2 to Ubound(arr1, 1)
dicSum(arr1(z, 1)) = dicSum(arr1(z, 1)) + arr1(z, 2)
next
for z = 2 to Ubound(arr1, 1)
arr2(z, 1) = dicSum(arr1(z, 1))
Next
arr2(1, 1) = "Summe"
Cells(1, 3).Resize(Ubound(arr2, 1), Ubound(arr2, 2)).Value = arr2
gruß Daniel

Anzeige
AW: variable Bereich (Summ) VBA
27.07.2015 20:00:43
hachim
Hallo Daniel,
vielen Dank für deine Lösungen.
die zweite Variante sieht sehr elegant aus.
leider verstehe ich nicht viel vom Aufbau der FormulaR1C1-Funktion.
kannst du mir bitte kurz schildern was sie genau macht und wie sie es macht?
vielen Dank nochmal
Grüße
Hachim

AW: variable Bereich (Summ) VBA
27.07.2015 20:46:10
Daniel
Hi
das ist nur die Formel mit Zellbezügen in R1C1-Schreibweise (Z1S1 in deutsch)
statt wie in der A1-Schreibewiese mit SpaltenBuchstabe-Zeilennummer schreibt man R-Zeilennummer-C-Spaltennummer
diese Schreibweise hat gegenüber der A1-Schreibweise den Vorteil, dass man relative Zellbezüge auch relativ beschreiben kann, während man bei A1-Schreibweise aus die relativen Zellbezüge absolut addressieren muss.
im Prinzip macht das Makro nichts anderes, als in die Spalte C die entsprechende ZählenWenn-Formel einzutragen und dann diese sofort durch ihr Ergebnis zu ersetzen, so wie wenn du in die Zelle C2 die Formel:
=Wenn(A1=A2;C1;SummeWenn(A:A;A2;B:B))

einträgst, diese nach unten ziehst, kopierst und an gleicher stelle als Wert einfügst.
Gruß Daniel

Anzeige
AW: variable Bereich (Summ) VBA
28.07.2015 20:51:40
hachim
Hallo Daniel,
vielen Dank nochmmal für deine Zeit und deine sehr große Hilfe.
ich habe jetzt leider noch zwei kleinigkeiten die ich lösen muss.
Dies ist in der beigefügten Datei erläutert.
Spalte C ist die aktuelle Lösung und spalte E ist die gewünschte Lösung.
wenn prüf_k ungeleich 0 ist dann soll die Summe gebildet werden ansonsten soll ein 0 ausgegeben ist.
wenn man Den Typ wechselt (zb. Typ A zu Typ B) dann soll der Wert die neue Summe (Typ-B) mit der alten Summe (Typ-A) zusammen addiert (siehe Datei).
vielen Dank im Voraus euch allen :)
https://www.herber.de/bbs/user/99134.xlsm

Anzeige
AW: variable Bereich (Summ) VBA
29.07.2015 14:54:36
hachim
bin auch für andere Löungsansätze offen...... :)

AW: variable Bereich (Summ) VBA
30.07.2015 09:35:26
Daniel
Hi
ganz ehrlich, ich verstehe noch noch nicht, was du willst.
Spalte E in deiner Beispieldatei ist leer
Gruß Daniel

AW: variable Bereich (Summ) VBA
30.07.2015 12:16:53
hachim
Hi,
sorry mein Fehler. habe die falsche Datei hochgeladen.
anbei die richtige.
https://www.herber.de/bbs/user/99176.xlsm
vielen Dank
Grüße
Hachim

AW: variable Bereich (Summ) VBA
30.07.2015 12:33:45
Daniel
Hi
ok schau dir das mal an, Formeln in Spalte H:I
https://www.herber.de/bbs/user/99179.xlsx
Gruß Daniel

Anzeige
AW: variable Bereich (Summ) VBA
30.07.2015 12:50:45
hachim
Hallo Daniel,
Danke für deine großartige Unterstützung.....das funktioniert.
gibt es dazu keine andere alternative:
zb. durch VBA mittels FormulaR1C1 ohne Hilfspalten?
also den von dir schon geschriebenen Code via FormulaR1C1 zu erweiteren durch zusätzliche if-Bedingungen zb.
Hintergrund: Excel-Formeln sind umzugehen, es sei denn es gibt dazu keine alternative.
vielen Dank
Grüße
Hachim

AW: variable Bereich (Summ) VBA
30.07.2015 13:57:00
hachim
Hallo Daniel,
das habe ich eben gelöst. :)
vielen Dank euere Hilfe.
Grüße
Hachim

AW: variable Bereich (Summ) VBA
30.07.2015 15:09:54
hachim
Hallo Daniel,
das habe ich eben gelöst. :)
vielen Dank euere Hilfe.
Grüße
Hachim
Anzeige

145 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige