Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
812to816
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
812to816
812to816
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA: Werte nach Kriterien aufsummieren + ausgeben

VBA: Werte nach Kriterien aufsummieren + ausgeben
26.10.2006 15:50:30
Holger
Hallo,
in einer Datei (siehe link) habe ich mehrere Projekte (Tabelle 1). Ziel ist, im Register "Tabelle 2" zu jedem Projekt den Gesamtbetrag zu ermitteln und hier hineinzuschreiben. Wenn der Betrag Null sein sollte, ist das Projekt NICHT anzuzeigen.
Die Projekte sind bereits sortiert.
Wie kann ich das in VBA programmieren?
https://www.herber.de/bbs/user/37686.xls
Gruss, Holger

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Werte nach Kriterien aufsummieren + ausge
26.10.2006 16:27:31
EtoPHG
Hallo Holger,
Mach eine Pivot-Tabelle auf Deine Datentabelle:
Menu - Daten - PivotTable-Bericht
Gruss Hansueli
AW: VBA: Werte nach Kriterien aufsummieren + ausge
26.10.2006 16:38:26
Holger
Hallo noch einmal,
Pivot habe ich eben mal ausprobiert, würde gehen, aber in der Tabelle 1 können mal 10 Projekte, mal aber auch mehrere Tausend stehen. Über Pivot muss ich doch einen festen Datenbereich angeben, das könnte ich aber nicht. Zudem sind die Spalten nicht immer genauso sortiert wie in der Beispieldatei.
Daher wäre mir eine VBA-Lösung lieber.
Gruss, Holger
AW: VBA: Werte nach Kriterien aufsummieren + ausge
26.10.2006 16:43:24
EtoPHG
Hallo Holger,
Pivot muss ich doch einen festen Datenbereich angeben
Wenn es sich um einen benannten Bereich handelt, vergiss die Zelladressen und nimm den Namen.
Die Frage ist, wie kommen einmal die 10 und ein andermal die Tausend Datensätze in die Tabelle1?
Per Externer Abfrage ? (Dann ist sogar schon ein Name vorhanden !)
Per VBA ? (Dann kann ein Name dort vergeben werden!)
Per Import ? (Dann sollte der importierte Bereich benammst werden!)
Gruss Hansueli
Viele Wege führen nach Rom. Nur wo ist Rom ?
Anzeige
AW: VBA: Werte nach Kriterien aufsummieren + ausge
26.10.2006 16:49:10
Holger
Die Daten kopiert meine Kollegin jeden Monat neu aus einem Bericht eines ERP-Systems heraus. Je nach Kostenstelle können die Zeilen den genannten Umfang annehmen. Da im ERP-System ab und an Spalten veschoben werden oder sogar neue hinzukommen, kann ich also keine feste Anzahl von Spalten oder Zeilen angeben.
Gruss, Holger
AW: VBA: Werte nach Kriterien aufsummieren + ausge
26.10.2006 17:22:08
EtoPHG
Hallo Holger,
Wie stellst Du Dir eine VBA Lösung unter dieser Randbedingung
kann ich also keine feste Anzahl von Spalten oder Zeilen angeben
dar ? Ich kann da auf alle Fälle auch nicht helfen....
Gruss Hansueli
AW: VBA: Werte nach Kriterien aufsummieren + ausge
27.10.2006 08:30:51
Heiko
Hallo Holger,
wenn trotz verschiedener und vertauschter Spalten in der Überschrift das Wort Projket für die Projektspalte und Betrag für die Betragspalte steht, dann könnte dieses Makro helfen.

Sub SummeT()
Dim bytSpalteP As Byte, bytSpalteB As Byte
Dim lngLastRow As Long, lngN As Long
Dim dblBetrag As Double
Dim strAlt As String
Dim rngFind As Range
Dim shtQuelle As Worksheet, shtZiel As Worksheet
' Start und ZielTabelle definieren, auf richtge Namen ANPASSEN
Set shtQuelle = Worksheets("Tabelle1")
Set shtZiel = Worksheets("Tabelle2")
' Projekt Spalte finden
Set rngFind = shtQuelle.Rows(1).Find("Projekt", LookIn:=xlValues)
If Not rngFind Is Nothing Then
bytSpalteP = rngFind.Column
End If
' Betrag Spalte finden
Set rngFind = shtQuelle.Rows(1).Find("Betrag", LookIn:=xlValues)
If Not rngFind Is Nothing Then
bytSpalteB = rngFind.Column
End If
' Raus wenn eins der beiden nicht zu finden ist
If (bytSpalteP = 0) Or (bytSpalteB = 0) Then
MsgBox "Es konnte keine Spalte PROJEKT bzw. BETRAG gefunden werden !", vbCritical, " Abbruch !"
Exit Sub
End If
' Letzte Zeile finden
lngLastRow = shtQuelle.Cells(Rows.Count, bytSpalteP).End(xlUp).Row
' Tabelle 2 vor neuen Einträgen löschen !!!
shtZiel.Cells.ClearContents
' 1. Zeile in die Zieltabelle kopieren.
shtQuelle.Rows(1).Copy shtZiel.Rows(1)
' Und nun los
strAlt = shtQuelle.Cells(2, bytSpalteP)
For lngN = 2 To lngLastRow + 1
If shtQuelle.Cells(lngN, bytSpalteP) = strAlt Then
dblBetrag = dblBetrag + shtQuelle.Cells(lngN, bytSpalteB)
Else
shtQuelle.Rows(lngN - 1).Copy shtZiel.Rows(shtZiel.Cells(Rows.Count, bytSpalteP).End(xlUp).Row + 1)
shtZiel.Cells(shtZiel.Cells(Rows.Count, bytSpalteP).End(xlUp).Row, bytSpalteB) = dblBetrag
dblBetrag = shtQuelle.Cells(lngN, bytSpalteB)
strAlt = shtQuelle.Cells(lngN, bytSpalteP)
End If
Next lngN
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: VBA: Werte nach Kriterien aufsummieren + ausge
27.10.2006 09:00:48
Holger
Puh, umfangreiches Makro. Aber verstehe jede Zeile (nur selber programmieren kann ich das so nicht) und es funzt auch. Supi!!! Herzlichen Dank für den VBA-Code, ist genau das, was ich wollte.
Konnte gestern nicht mehr antworten, da unser Intenetserver wegen Wartungsarbeiten abgeschaltet wurde.
Schönes Wochenende
Gruss, Holger

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige