Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
896to900
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
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Summen bilden mit VBA

Summen bilden mit VBA
14.08.2007 09:59:00
Rainer
hallo excelgemeinde
ich habe in einem Tabellenblatt beliebig viele Einträge.
In Spalte A Habe ich Lieferungsnummern (Primärschlüssel) und in Spalte B habe ich die jeweilige Kundennumer. In Spalte C hab ich die jeweiligen Transportkosten.
so etwa:
LieferungsNR //KDNR //TPKosten
nun suche ich nach einem VBA code, der mir die Transportkosten pro Kundennummer errechnet.
Das Ergebnis soll in ein neues Tabellenblatt gespeichert werden, indem ich dann in Spalte A dieKundennummern und in Spalte B die konsolidierten Transportkosten (pro Kundennummer) habe.
also:
KDNR // TotTPorkosten
eigentlich die Funktionalität einer Pivottabelle. (oder soviel ich weiss kann man das sonst nur mit pivot)
geht sowas?
viele grüsse
andy

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summen bilden mit VBA
14.08.2007 10:03:00
ottoh
Hallo Andy,
das kann man wunderbar mit einer Pivot-Tabelle erledigen. Zeichne die Vorgänge mit dem Makrorekorder auf und schau Dir an, was rauskommt.
Gruß OttoH

AW: Summen bilden mit VBA
14.08.2007 10:30:27
Wuxinese
Hallo Namensvetter,
ich hab noch eine andere Loesung gemacht. Ist nicht sehr elegant, aber es tut...
https://www.herber.de/bbs/user/45043.xls
Gruss
Rainer

Beispiel mit Sverweis?
14.08.2007 10:39:00
Matthias
Hallo
Warum nimmst Du nicht Sverweis ?
Userbild
Userbild

Anzeige
AW: Beispiel mit Sverweis?
14.08.2007 10:51:00
Rainer
Besten Dank für die Zahlreichen Antworten.
@Mattias: ich muss danach mit diesen Zahlen weiterrechnen, bzw. hab dann einen vlookupbefehl. Deshalb kommt deine, obwohl sehr ästethische Variante nicht in Frage....
ich werde nun mal den Makrocode umbasteln ;-)
Ihr habt mir auf alle Fälle weitergeholfen!!! Besten Dank!

Hat doch nicht funktioniert
14.08.2007 16:02:38
Rainer
einerseits habe ich den Code aus Wuxinese files verwendet. Der funktioniert zwar, aber dauert massiv zu lange (grösser 5 min) bei meinem File (rund 60'000 Zeilen)
desweiteren versuchte ich das ganze schlicht mit dem Rekorder aufzunehmen. Damit meine ich das Erstellen der Pivot tabelle. Da kommt er aber dann beim Ausführen immer in einen Konflikt rein. Er kann die Aktion des Anordnen der Datensätzte (normal mit drag and drop) nicht bewerkstellingen.
Kennt jemand enien "schlanken" code der für meine Datensätze funktionert oder weiss jemand wie ich die automatisierte Pivot-tabelle zum laufen kriegen kann?
herzlichen dank!
andy

Anzeige
AW: Hat doch nicht funktioniert
14.08.2007 17:07:00
Harry
Hallo
funktioniert es nicht? oder funktioniert es nur zu langsam?
in beiden Fällen wäre ein Upload deiner Datei, zumindest aber deines letzten Codes hilfreich.
Bei solchen Listengrößen ist (zumindest, wenn es nur ein ständiges Lesen und Schreiben von Zellwerten ist) eine Verwendung von arrays im VB-Code meistens sinnvoll/performanter. Kann man aber nur an Hand deines Codes entscheiden.
Gruß
Harry

AW: Hat doch nicht funktioniert
15.08.2007 02:33:42
Wuxinese
Hallo Rainer,
ich hab den Code nochmal abgeaendert, jetzt sollte es doch etwas schneller gehen. Lass mich bitte wissen, ob sich irgendwas verbessert hat, ich habe keine Liste mit 60.000 Zeilen zur Verfuegung und werde auch keine solche erstellen... :-)
https://www.herber.de/bbs/user/45074.xls
Gruss
Rainer

Anzeige
AW: Hat doch nicht funktioniert
15.08.2007 10:16:14
Rainer
hi rainer
ich habe nun den code aus deinem File erneut verwendet. ich hab ihn diesmal ganz durchlaufen lassen. Bei 30'000 Datensätzen brauchte er rund 3 minuten. Dies geht mir natürlich viel zu lange. in dieser Zeit kann man manuell mit einer Pivot das Selbe innerhalb von 20 sec. errechnen.
bestenfalls würde das Pivot-erstellen ja auch automatisch gehen. Beim Aufzeichnen erhalte ich folgenden Code:
Sub Makro1() ' Makro1 Makro ' Makro am 15.08.2007 von Kyburzr aufgezeichnet 'Columns("A:D").Select ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Tabelle1!C1:C4").CreatePivotTable TableDestination:="", TableName:= _ "PivotTable1", DefaultVersion:=xlPivotTableVersion10 ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ActiveSheet.Cells(3, 1).Select ActiveWorkbook.ShowPivotTableFieldList = True With ActiveSheet.PivotTables("PivotTable1").PivotFields("Auftr.geb.") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Transportkosten"), "Anzahl von Transportkosten", _ xlCount Range("A3").Select ActiveSheet.PivotTables("PivotTable1").PivotFields("Anzahl von Transportkosten" _ ).

Function = xlSum
End Sub


Sobald ich dieses dann ausführe. sagt er bei der Zeile:
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("Transportkosten"), "Anzahl von Transportkosten",xlCount
"Laufzeitfehler 1004, Die Pivot-Field-Eigenschaft des Pivot-Objektes kann nicht zugeordnet werden?
kennt das jemand von euch?
ich möchte mich nochmals bei euch bedanken, für die bereits geleistete Hilfe und ev. auch kommende ;-)
gruss
r.

Anzeige
AW: Summen bilden mit VBA
15.08.2007 13:57:47
Werner
Hallo Rainer,
ist vielleicht nachfolgende Matrixformel 'ne Lösung?
Tabelle1

 ABCDEFG
1LieferungsNrKdNrTPKosten    
2000000001Kd100110    
3000000002Kd100215 KdNr:Kd1002<-- Kundennummer eingeben!
4000000003Kd100320 Summe TPKosten16260 
5000000004Kd100425    

Formeln der Tabelle
ZelleFormel
F4{=SUMME((C2:C65536)*(B2:B65536=F3))}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Matrixformel steht in Zelle F4.
Berechnung dauert über alle Zeilen (bis 65536) "nur" Sekundenbruchteile
Gruß
Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige