Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1572to1576
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
Formel in VBA umwandeln
16.08.2017 12:13:11
Michael
Hallo Zusammen,
ich habe folgendes Problem: In einer großen Datentabelle (300.000 Zeilen und 60 Spalten) schmiert Excel bei folgender, zusätzlichen Rechebspalte nach 30 Minuten ab:
=WENN(ZÄHLENWENNS($AA$12:AA12;[@Merkmal];$AE$12:AE12;[@Datum])<=1;ZÄHLENWENNS([Merkmal]; [@Merkmal]; [Datum];[@Datum]);"")
Die Formel ziehe ich bis zur Zeile 300.000 und dann kommt schon eine Meldung wegen der Ressourcen. Mein PC hat aber 32 GB Arbeitsspeicher und 16 Kerne sowie eine sehr schnelle SSD von Samsung.
Ich denke, das lässt sich vielleicht auch mit VBA lösen, ich kann jedoch kaum VBA!
Hat Jemand eine Idee?
Vielen Dank und Gruß
Michael

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

Betreff
Datum
Anwender
Anzeige
AW: könnte gehen
16.08.2017 15:00:35
Fennek
Hallo,
es gibt Beispiele, dass VBA auch solche Datenmengen relativ schnell bearbeiten kann.
Als Start wird aber eine KLEINE Beispieldatei benötigt. (einige dutzend Fälle, die aber auch Ergebnisse bringen)
mfg
Beispieldatei eingestellt
16.08.2017 16:16:23
Michael
Hallo,
hier die Datei:
https://www.herber.de/bbs/user/115525.xlsx
Leider löst meine Formel nicht das Kernproblem, welches ich in der Beispieldatei hinterlegt habe.
An der Lösung, wie man die Formel in VBA abbildet, wäre ich aber trotzden sehr interessiert!
... vielleicht kannst Du ja auch mein Kernproblem lösen.
Vielen Dank und Gruß
Michael
Anzeige
AW: 2 getrennte Pivot
16.08.2017 16:36:00
Fennek
Hallo,
als erste Idee:
- erste Pivot: Kunden und Jahreumsatz
- zweite Pivot deneben mit den Kunden in den selben Zeilen: Fiter: Datum, Zeilen: Kunden, Werte: Anzahl der Auswertung VErkäufer
Falls Kennziffern gebildet werden sollen, geht dies mit Formeln für Kunden jeweils in der selben Zeile.
mfg
geht leider nicht
16.08.2017 16:53:23
Michael
Hallo Fennek,
das wird klappen, da alle Spalten in der Original-Liste miteinander in Beziehung stehen. Oft muss man über reduzieren/erweitern bis in die 7.Ebene gehen.
Es wäre schon optimal, wenn man das rechnerich in einer Liste oder Pivot unterkriegen würde.
Gruß
Michael
Anzeige
AW: Array-Funktion?
16.08.2017 18:20:31
Fennek
Hallo,
es ist möglich, auch recht schnell, eine beliebig steuerbare Summierung über VBA zu programmieren.
So wie ich es verstanden habe, werden 3 Felder benötigt:
- alle Kunden
- Summe pro Kunden für das gesamte Jahr
- Summe der Aufträge für einen, beliebig auswählbaren Monat
Technisch gesprochen könnte dies mit einem Dictionary gerechnet werden:
- key: Kunde
- item: Array(Umsätze, Aufträge für einen ausgewählten Monat)
Die Spalten der Original-Datei müssen wie in der Bsp-Datei sein!!!
Laufzeiten von deutlich unter 1 Minute sollten möglich sein.
Falls du es nicht selbst programmieren kannst, bestätige bitte den Ansatz.
mfg
Anzeige
AW: Test
16.08.2017 20:07:17
Fennek
Hallo,
teste mal diesen Code:

Sub iFen()
'############## Daten nur eines Jahres #############
Anf = Timer
Dim it(1) 'Array(Anzahl, Umsatz)
Dim Res()
Mon = 1 'Monat der Auswertung
Sheets(1).Activate
Ar = Cells(1).CurrentRegion
With CreateObject("Scripting.Dictionary")
For i = 2 To UBound(Ar)
If Not .exists(Ar(i, 2)) Then
it(1) = Ar(i, 5)
If Month(Ar(i, 1)) = Mon Then it(0) = 1
.Item(Ar(i, 2)) = it
Else
it(0) = .Item(Ar(i, 2))(0)
it(1) = .Item(Ar(i, 2))(1)
If Month(Ar(i, 1)) = Mon Then it(0) = it(0) + 1
it(1) = it(1) + Ar(i, 5)
.Item(Ar(i, 2)) = it
End If
Next i
'########### Ausgabe #########
i = 0
ReDim Res(.Count, 2)
For Each k In .keys
Res(i, 0) = k
Res(i, 1) = .Item(k)(0)
Res(i, 2) = .Item(k)(1)
i = i + 1
Next k
Sheets(2).UsedRange.Clear
Sheets(2).Cells(1, 1).Resize(, 3) = Array("Kunde", "Anzahl: " & VBA.MonthName(Mon), " _
Jahresumsatz")
Sheets(2).Cells(2, 1).Resize(UBound(Res) + 1, 3) = Res
End With
Debug.Print Timer - Anf
End Sub
mfg
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige