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

Suche Hilfe: Iterative Suchfunktion Spalte + Summe + Ausgabe

Suche Hilfe: Iterative Suchfunktion Spalte + Summe + Ausgabe
09.11.2023 16:32:18
Nasrag
Hallo Zusammen,

bin leider zu eingerostet zum Programmieren und mit VBA kann ich nur Kleinkram, aber nichts komplexeres erschaffen.

Ich habe eine Excel mit diversen Spalten ca. 150.000 Zeilen und muss diese auswerten.
Ich versuch mein Problem mal zu umreißen und ggf. in Psydeu-Code erklären was ich vor habe.
Hintergrund
Ich hab in Spalte A: Zahlen (von 1 bis 2000) und in Spalte B einen Betrag mit bis zu 4 Stellen hinter dem Komma.
Die Zahlen von 1 bis 2000 kommen in den 150.000 Zeilen mehrfach vor, oder garnicht.
Nun brauche ich eine Gesamtsumme wie oft die Zahl vorkommt und die Addition der Werte aus Spalte B. (Aus Anzahl und gesamt Wert bilde ich später noch einen Durchschnitt)

Wenn zum Bsp.
in Spalte A die Zahl 199 - 7 mal enthalten ist dann sollen die entsprechenden Werte aus Spalte B addiert werden
Nun möchte ich die Zahl 199 in Spalte A eines 2. Sheets kopieren, dann Anzahl wie oft enthalten in Spalte B und die Addierte Summe in Spalte C
Und das von den Zahlen 1 bis 2000

Hier mein Versuch als "Pysdo-Code"
DIM Zahl As Integer (langt da nur ganze Zahlen)
DIM Summe As Long
DIM Anzahl As Integer (langt da die Zahlen nicht mehr als 32.767 mal vorkommen werden)
Zahl = 1

Suche in Spalte A nach Zahl
Wenn Zahl gefunden wird
summiere den entsprechende Wert aus Spalte B und merke dir die Anzahl der Summierungen
Suche Weiter in Spalte A bis Zahl nicht mehr gefunden wird
Anschliessend Schreibe in 2.Sheet Zahl in Spalte A, Anzahl in in Spalte B und Summe in Zeile C
Wenn Zahl nicht gefunden wird
Zahl = Zahl +1 und suche erneut in Spalte A

Hoffe das ist so verständlich! xD
Verzweifle da so langsam dran, weil es meine Kompetenz in VBA und Excel überschreitet...

Wenn hier jemand weiterhelfen kann, auch nur in Teilbereichen gibt neben einem Dankeschön auch eine virtuelle Umarmung von mir.

Gruß

Nasrag

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

Betreff
Datum
Anwender
Anzeige
AW: Suche Hilfe: Iterative Suchfunktion Spalte + Summe + Ausgabe
09.11.2023 16:44:25
JoWE
Hallo Nasraq,
ohne Beispieltabelle scheint mir das zunächst nach einer Pivot-Tabelle zu rufen.
Gruß
Jochen
AW: nur ca 1 Dutend Mausklicks mit Pivotauswertung owT
09.11.2023 16:44:37
neopa C
Gruß Werner
.. , - ...
AW: Suche Hilfe: Iterative Suchfunktion Spalte + Summe + Ausgabe
09.11.2023 19:59:39
Yal
Hallo Nasrag,

eigentlich hätte man schon nach dem 3ten Zeile aufhören zu lesen: Auswertung heisst Pivottable:
idealerweise hat deine Liste Überschriften. Wenn füge eine: "Artikel" in A1, "Wert" in B1
auf die erste Zelle deine Liste gehen,
Menü "Einfügen", "Pivottable",
der Bereich wird erkannt, ob auf diese Arbeitsmappe oder auf eine neue, spielt keine Rolle.
Verschiebt den Feld "Artikel" vom Feldliste in der weissen Quadrat "Zeile",
verschiebt den Feld "Wert" zweimal vom Feldliste in der weissen Quadrat "Wert"
der Zweite bekommt den Name "Summe von Wert2", klick auf dem Dropdown-Eck davon und wähle "Wertfeldeinstellungen...",
Andere die "zusammenfasungs"-funktion in "Anzahl", ok.

Fertig. Ändern sich Werte in der Quelle: Rechtsklick auf die Pivottable und "aktualisieren".

Da es in der Frage um VBA ging (und weil es mir langweilig ist), hier die VBA-Lösung (ungetestet, weil keine Material dafür):
Sub Sammeln_Summieren()

Dim E ' E wie Element
Dim Sum As Object
Dim Anz As Object

Set Sum = CreateObject("Scripting.Dictionary")
Set Anz = CreateObject("Scripting.Dictionary")
'Sammeln, zählen, summieren
With Worksheets("Tabelle1")
For Each E In Range(.Range("A1"), .Cells(Rows.Count, 1).End(xlUp))
Sum(E.Value) = Sum(E.Value) + E.Offset(, 1).Value
Anz(E.Value) = Anz(E.Value) + 1
Next
End With
'Ausgeben (inn einem neuen Blatt)
With Worksheets.Add(After:=Worksheets(Worksheets.Count))
.Range("A1") = "Schlüssel": .Range("B1") = "Anzahl": .Range("C1") = "Summe"
For Each E In Anz.Keys
With .Cells(Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = E
.Offset(1, 1).Value = Anz(E)
.Offset(1, 2).Value = Sum(E)
End With
Next
End With
End Sub

Ändern sich Werte in der Quelle: lösche die Ausgaben blatt und starte das Makro wieder. Nach spätestens 4mal wirst Du selber sagen: wie war's nochmal mit der Pivottable? ;-)

VG
Yal

Anzeige
Formeln...
09.11.2023 20:17:15
Yal
(zugegeben, es ist mir sehr langweilig ;-)

auf dem guten Beispiel von Onur, geht es natürlich auch mit Formeln (wobei bei 150k Zeilen...), hier sogar mit drei xl365 Formeln:

Die erste wäre in A1 in einem neuen Blatt
=EINDEUTIG(Quelle!A:A)
in B1:
=ZÄHLENWENN(Quelle!A:A;A1#)
in C1
= SUMMEWENN(Quelle!A:A;A1#;Quelle!B:B)

VG
Yal
AW: Suche Hilfe: Iterative Suchfunktion Spalte + Summe + Ausgabe
10.11.2023 09:41:50
Nasrag
So erstmal Danke an ALLE (und die entsprechende virtuelle Umarmung!)
Mit ner Pivottabelle geht das sehr gut Danke @JoWE @neopa C und @onur.

Ich möchte das mit VBA machen weil das nur eine Teilfunktion ist und es leicht updaten möchten.

Daher wollte ich das mit VBA machen.

Danke auch @Yal ist genau das was ich haben wollte, aber nicht hinbekommen habe.

Und immo liege ich mit Männergrippe im Bett und dachte mir, dann lass mal ne Runde Excel inkl. VBA machen.
Keine so gute Idee im Nachgang, weil alles länger dauert und Denken und Konzentrieren nicht mehr ganz so gut klappt. Aber bin Dank euch nen guten Schritt weiter.

Gruß

Nasrag
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige