Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Summenbildung bei wechselnder Spalte!?

Betrifft: Summenbildung bei wechselnder Spalte!? von: Melanie
Geschrieben am: 16.09.2004 16:49:02

Hallo zusammen!

Ich möchte eine Artikeldatei wöchentlich fortschreiben mit Beständen und Werten. Das habe ich auch schon soweit auf den Weg gebracht, nun kommen die letzten Verschönerungen. Und zwar möchte ich in der 3.-letzten Spalte der Tabelle in der ersten Reihe eine Summe der Werte bilden. Aber das muss halt variable gestaltet werden, weil die Spalte halt nächste Woche schon wieder 2 Spalten weitergerückt ist.
Ich bin mir sicher, ich verzweifle, wenn ich die Lösung von Euch sehe, weil ich weiß, dass sie einfach ist, aber ich komme nicht drauf.

Hier kommt das, was ich schon habe:

Sub Topteile()
'nach Speichern der Gesamtbestandsdatei
Workbooks.Open ("D:\topteile.xls")

Dim icolL As Integer
Dim irowL As Integer, irow As Integer
Dim wkbGesamtbestand As Workbook

Workbooks("topteile.xls").Worksheets("Tabelle2").Activate
Set wkbGesamtbestand = Workbooks("Gesamtbestand.xls")

'Zeilenzähler
irowL = Cells(Rows.Count, 1).End(xlUp).Row
'Spaltenzähler
icolL = ActiveSheet.UsedRange.Columns.Count
'2 Spalten einfügen vor vorletzter Spalte
Columns(icolL - 1).Select
Selection.Insert shift:=xlToRight
Selection.Insert shift:=xlToRight
Cells(2, icolL - 1) = "Bestand KW " & Format(Now - 8, "ww")
Cells(2, icolL) = "Wert KW " & Format(Now - 8, "ww")
Cells(2, icolL + 1) = "Differenz in EUR"
Cells(2, icolL + 2) = "Veränderung in %"

'in der vorletzten Spalte werden die Werte der beiden davor
'liegenden Spalten subtrahiert, in der letzten %uale Abweichung errechnet
For irow = 3 To irowL
On Error Resume Next
Cells(irow, icolL - 1) = Application.WorksheetFunction.VLookup(Cells(irow, 1), wkbGesamtbestand.Worksheets("Gesamtbestand").Range("A1:Q30000"), 16, False)
Cells(irow, icolL) = Application.WorksheetFunction.VLookup(Cells(irow, 1), wkbGesamtbestand.Worksheets("Gesamtbestand").Range("A1:Q30000"), 17, False)
Cells(irow, icolL + 1).FormulaR1C1 = "=RC[-2]-RC[-4]"
Cells(irow, icolL + 2).FormulaR1C1 = "=RC[-2]/RC[-4]"
Next irow

Columns("A:DD").AutoFit

'Summenzelle über icolL
cells(1, icolL) = Application.WorksheetFunction.Sum(Range ?????????????????


'Tausenderpunkt in allen Zellen
'icolL -1 und icolL + 1 nur ganze Zahlen
'icolL und icolL + 2 nur 2 Nachkommastellen
End Sub


Das sind so die letzten Klimmzüge, die ich noch machen muss - wäre prima, wenn ihr helfen könntet.

Lieben Gruß,
Melanie
  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: Reinhard
Geschrieben am: 16.09.2004 17:12:52

Hi Melanie,
lade doch mal kleine Beispieldatei hoch.
..."möchte ich in der 3.-letzten Spalte der Tabelle in der ersten Reihe eine Summe der Werte bilden"...
verstehe ich nicht.
Mit
Sub tt()
MsgBox WorksheetFunction.Sum(Range(Cells(1, 1), Cells(1, Cells(1, 256).End(xlToLeft).Column)))
End Sub

krieg ich die Summe der ersten Reihe,wobei
Sub tt()
MsgBox WorksheetFunction.Sum(Range("A1:A256")
End Sub

sicher auch ging.
Gruß
Reinhard


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: Melanie
Geschrieben am: 16.09.2004 18:09:41

Hallo noch mal!

Also, hier

https://www.herber.de/bbs/user/10980.xls

ist die Beispieldatei. Ich möchte vor den Berechnungsspalten in jeder neuen KW die Bestände und Werte eintragen und über der Wertspalte eine Gesamtsumme in Reihe 1. Aber weil sich diese Spalte mit jeder neuen KW um zwei Spalten nach rechts verschiebt kann ich keine festen Zellbezüge nehmen. Ich muss das irgendwie variabel halten und weiß nicht wie ich das machen soll.
Ist das jetzt verständlicher geworden? Ich hoffe!

Lieben Gruß,
Melanie


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: Reinhard
Geschrieben am: 16.09.2004 18:39:31

Hi Melanie,
https://www.herber.de/bbs/user/10981.xls
Gruß
Reinhard


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: Melanie
Geschrieben am: 16.09.2004 20:31:44

Hallo Reinhard!

Ist das richtig: Du hast die Formel "zu Fuß" eingetragen!? Leider habe ich Dir den VBA-Code in der Datei nicht mit hochgeladen, weil er bei mir in der Personl.xls ist ( habe ich vergessen, aber ich hatte ihn ja auch schon komplett gepostet). Ich suche eine VBA-Lösung, bei der ich diese Zelle, die sich in der Position jede Woche verschiebt, direkt ansprechen kann. Bei Deiner Lösung muss ich dann leider wieder von Hand kopieren.
Hast Du noch eine weitere Idee?

Lieben Gruß,
Melanie


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: Reinhard
Geschrieben am: 16.09.2004 21:29:58

Hi Melanie,
bei dem ersten Material nimmt der Bestand von KW36 zu KW37 um 633 zu. Warum ist denn dann Die "Differenz wert" negativ?
probiers mal so:
Sub Topteile()
'nach Speichern der Gesamtbestandsdatei
Workbooks.Open ("D:\topteile.xls")

Dim icolL As Integer
Dim irowL As Integer, irow As Integer
Dim wkbGesamtbestand As Workbook

Workbooks("topteile.xls").Worksheets("Tabelle2").Activate
Set wkbGesamtbestand = Workbooks("Gesamtbestand.xls")

'Zeilenzähler
irowL = Cells(Rows.Count, 1).End(xlUp).Row
'Spaltenzähler
icolL = ActiveSheet.UsedRange.Columns.Count
'2 Spalten einfügen vor vorletzter Spalte
Columns(icolL - 1).Select
Selection.Insert shift:=xlToRight
Selection.Insert shift:=xlToRight
Cells(2, icolL - 1) = "Bestand KW " & Format(Now - 8, "ww")
Cells(2, icolL) = "Wert KW " & Format(Now - 8, "ww")
Cells(2, icolL + 1) = "Differenz in EUR"
Cells(2, icolL + 2) = "Veränderung in %"

'in der vorletzten Spalte werden die Werte der beiden davor
'liegenden Spalten subtrahiert, in der letzten %uale Abweichung errechnet
For irow = 3 To irowL
On Error Resume Next
Cells(irow, icolL - 1) = Application.WorksheetFunction.VLookup(Cells(irow, 1), wkbGesamtbestand.Worksheets("Gesamtbestand").Range("A1:Q30000"), 16, False)
Cells(irow, icolL) = Application.WorksheetFunction.VLookup(Cells(irow, 1), wkbGesamtbestand.Worksheets("Gesamtbestand").Range("A1:Q30000"), 17, False)
Cells(irow, icolL + 1).FormulaR1C1 = "=RC[-2]-RC[-4]"
Cells(irow, icolL + 2).FormulaR1C1 = "=RC[-2]/RC[-4]"
Next irow
Columns("A:DD").AutoFit
'Summenzelle über icolL
Cells(1, icolL) = Application.WorksheetFunction.Sum(Range(Cells(3, icolL), Cells(Cells(65536, icolL).End(xlUp).Row), icolL))
'Tausenderpunkt in allen Zellen
'icolL -1 und icolL + 1 nur ganze Zahlen
'icolL und icolL + 2 nur 2 Nachkommastellen
End Sub

Gruß
Reinhard


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: Melanie
Geschrieben am: 16.09.2004 21:43:10

Hallo Reinhard!

Das mit der "falschen Logik" liegt daran, dass ich einfach irgendwelche Werte getippt habe ohne "Sinn und Verstand"...
Leider klappts immer noch nicht, aber es kann nur noch ein minimaler Schritt sein!
für die Zeile:
Cells(1, icolL) = Application.WorksheetFunction.Sum(Range(Cells(3, icolL), Cells(Cells(65536, icolL).End(xlUp).Row), icolL)
lautet die Fehlermeldung:
Falsche Anzahl an Argumenten bzw. falsche Eigenschaftszuweisung. Dabei ist RANGE blau markiert. Kannst Du mir bei diesem letzten Schritt auch noch helfen? Wahrscheinlich fehlt nur eine Klammer, aber ich weiß nicht wo.

Gruß,
Melanie


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: andre
Geschrieben am: 16.09.2004 21:47:51

Hallöchen,
die vorletzte Klammer dürfte auch ans Ende gehören,


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: Melanie
Geschrieben am: 16.09.2004 22:00:36

Hallo ihr beiden!

Ich bin ja untröstlich und frage mich auch mittlerweile was mehr Aufwand macht: der Code oder drei einfache Klicks mit der Maus wenn ich von Hand kopiere... *heul*
ABER: auch mit doppelter Klammer hinten klappt´s nicht. Habe auch schon versucht, das Komma durch einen Punkt zu ersetzen. Dann meckert er zwar nichts mehr an, aber er rechnet auch nicht. :-(

Gruß,
Melanie (mit dem schlechten Gewissen, dass sie so was nicht selber hinkriegt)


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: andre
Geschrieben am: 16.09.2004 22:07:10

Hallöchen,
hab mich glaube auch verzählt, nimm mal noch eine dritte hinten dran


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: Melanie
Geschrieben am: 16.09.2004 22:10:50

Hallo Andre!

Sieht auch nicht gut aus:
Fehler beim Kompilieren
Erwartet: Anweisungsende

Gruß,
Melanie


  


Betrifft: AW: Summenbildung bei wechselnder Spalte!? von: andre
Geschrieben am: 16.09.2004 22:19:59

Hallöchen,
also das ist die "Grundform" und die geht,
a = WorksheetFunction.Sum(Range("A1:C1"))
und hier stimmen die Klammern, 6x auf und 6x zu, die Stellung ist auch ok,
b = WorksheetFunction.Sum(Range(Cells(3, icolL), _
Cells(Cells(65536, icolL).End(xlUp).Row, icolL)))
Wie ist den der Wert von Deinem icolL?



  


Betrifft: Es klappt! von: Melanie
Geschrieben am: 16.09.2004 22:27:45

Hallo André!

Reinhard hat mir noch mal die selbe Formel geschickt wie Du nun.
Ich hatte fälschlicherweise hinter dem .Row noch eine Klammer....
Jetzt ist alles gut und meine kleine Seele hat Ruhe. Vielen Dank an Euch beide, dass ihr mir bis zum "Letzten" geholfen habt. Echt Spitze!!!

Lieben Gruß,
Melanie


  


Betrifft: Sorry von: Reinhard
Geschrieben am: 16.09.2004 22:14:49

Hi Melanie,
nimm mal:
Cells(1, icolL) = Application.WorksheetFunction.Sum(Range(Cells(3, icolL), Cells(Cells(65536, icolL).End(xlUp).Row, icolL)))
Gruß
Reinhard


  


Betrifft: YESSSSS!!!!!! :-)))))) von: Melanie
Geschrieben am: 16.09.2004 22:19:13

Jaaaaaaaaa! Ihr habt´s geschafft! Es klappt!

Vielen, vielen Dank!

Lieben Gruß,
Melanie


 

Beiträge aus den Excel-Beispielen zum Thema "Summenbildung bei wechselnder Spalte!?"