Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Extrem große Datenmengen verarbeiten und zuordnen

Forumthread: Extrem große Datenmengen verarbeiten und zuordnen

Extrem große Datenmengen verarbeiten und zuordnen
17.11.2014 17:42:26
Barry
Hallo,
ich habe folgende Aufgabe: Herunterbrechen von sehr großen Sammelrollen in kleinere funktionelle Einheiten (mehrere Einzelrollen), Dazu muss ich für die Sammelrollen herausfinden, welche TA sie enthalten und in welchen anderen Rollen diese TA enthalten sind.
Ziel: E:DE:SD_CAM MANAGER FOR DE enthält als einzige Rolle TA Z4D1 behalten
TA Z4D1 auch in Einzelrollen E:DE:Create Sales Order, etc. enthalten, nicht behalten
Datenmaterial: Abruf aus SAP R/3
Also Rolle E:DE:SD_CAM MANAGER FOR DE - TA Z4D1 - in E:DE:Create Sales Order, E:DE:Change Sales Order, etc.
Problem: 135.000 Zeilen, 230 Spalten, 1.215.000 Zellen
Auch eine Darstellung als Pivottabelle ist absolut nicht hilfreich, da es sich um extrem viele Daten handelt, die so nicht übersichtlich dargestellt werden können.

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Extrem große Datenmengen verarbeiten und zuordnen
17.11.2014 17:44:15
Barry
https://www.herber.de/bbs/user/93833.xlsx
Da ist die Datei (ist nur eine Musterdatei, nicht die tatsächliche, die ist einfach zu groß), ich weiß aber nicht wie man sie hier reinstellt

AW: Extrem große Datenmengen verarbeiten und zuordnen
17.11.2014 17:45:42
Barry
Für Eure Hilfe wäre ich sehr dankbar

Anzeige
Extrem große Datenmengen verarbeiten und zuordnen
17.11.2014 20:36:42
Erwin
Hallo Barry,
1. wenn unerledigt, dann Frage auf offen stellen (also Haken rein in Antwortformular)
2. für Excel ist das nicht wenig, vor allem bei den vielen Spalten; überleg mal ob das evtl besser in Access zu machen ist
3. ich habe keine Lösung
Grüße - Erwin

AW: Extrem große Datenmengen verarbeiten und zuordnen
18.11.2014 04:53:22
Barry
Hallo Erwin,
Danke für Deine Antwort.
Bei der Spaltenzahl habe ich mich geirrt, so viele sind es gar nicht.
In der Mustertabelle in Tab Daten
Bereich - User ID - Rollenname - Role Type - TA -TA Beschreibung - CLUSTER - Lager - Sales Org
Wir sortieren nur nach Rollenname, Rollentyp (Sammel- oder Einzelrolle) und TA.
Es sind allerdings in Wirklichkeit tatsächlich 135.000 Zeilen.
Ich dachte, für Excel-Füchse sei das kein Problem. Vielleicht sind es ja auch drei Arbeitsschritte.
Tab Daten
Spalte C - Rollenname
Spalte D - Rollentyp (Sammel- oder Einzelrolle)
Spalte E - TA
Tab Ergebnis
Suche Sammelrolle
Sammelrolle A
Spalte F - alle TAs zu Sammelrolle A
Sammelrolle A - TA 1
Sammelrolle A - TA 2
Sammelrolle A - TA 3
(das lässt sich mit SVWEIS noch relativ einfach machen)
Jetzt kommt es:
Nimm TA 1 aus Sammelrolle A und suche aus Tab Daten alle Rollennamen, die diese TA enthalten.
Auswertung:
ROT: TA 1 kommt in Sammelrolle A, Sammelrolle B, Einzelrolle X vor, Konsequenz: LÖSCHEN
GRÜN: TA 3 nur und ausschließlich in Sammelrolle A enthalten, Konsequenz: BEHALTEN
Ziel:
Identifizierung von TA, die nur und ausschließlich in der Sammelrolle enthalten sind.
Herauslöschen von TA, die in der Sammelrolle enthalten sind.
Hört sich doch eigentlich gar nicht so schwer an, nur ich weiß nicht, wie ich dahinkomme.
Vielen Dank und Gruss
Gruss

Anzeige
AW: Extrem große Datenmengen verarbeiten und zuordnen
18.11.2014 16:53:38
fcs
Hallo Barry,
hier mal ein Ansatz. Ich bin mir aber aber nicht sicher, ob ich die Verarbeitung der Einzelrollen korrekt verstanden hab. Im Moment werden sie ignoriert.
Gruß
Franz
'Erstellt unter Excel 2010
'Code in einem allgemeinen Modul
Sub TA_Sortieren_extrahieren()
' Sortieren Makro
Dim wksData As Worksheet, wksErgebnis As Worksheet
Dim Zeile_D As Long, Zeile_D1 As Long, Zeile_DL As Long, Spalte_DL As Long
Dim arrData, arrErgebnis, iCount As Integer, iCount2 As Long, Spalte
Dim strRolle As String, strTA As String
Set wksData = ActiveWorkbook.Worksheets("Daten")
Set wksErgebnis = ActiveWorkbook.Worksheets("Ergebnis")
With wksData
'Daten sortieren nach Role Type / Tellenname / TA
If .AutoFilterMode = True Then
If .FilterMode = True Then .ShowAllData
Else
.UsedRange.AutoFilter
End If
.AutoFilter.Sort.SortFields.Clear
.AutoFilter.Sort.SortFields.Add Key:=.Range("D2"), _
SortOn:=xlSortOnValues, Order:=xlDescending, _
DataOption:=xlSortNormal
.AutoFilter.Sort.SortFields.Add Key:=.Range("C2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.AutoFilter.Sort.SortFields.Add Key:=.Range("E2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With .AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'letzte Daten-Zeile ermitteln
Zeile_DL = .Cells(.Rows.Count, 1).End(xlUp).Row
'letzte Daten-Spalte setzen/berechnen
Spalte_DL = 9 ' .Cells(1, .Columns.Count).End(xlToLeft).Column
'Daten in Array einlesen
arrData = .Range(.Cells(1, 1), .Cells(Zeile_DL, Spalte_DL + 1))
'Titelzeile als zu übernehmen kennzeichnen
arrData(1, Spalte_DL + 1) = True: iCount2 = 1
For Zeile_D = 2 To Zeile_DL
'Prüfen, ob Zeile schon mit True oder False gekennzeichnet wurde
If IsEmpty(arrData(Zeile_D, Spalte_DL + 1)) Then
'Rollenname in Variable einlesen, wenn er wechselt
If strRolle  arrData(Zeile_D, 3) Then
strRolle = arrData(Zeile_D, 3)
End If
'Prüfen, ob Sammelrolle
If arrData(Zeile_D, 4) = "Sammelrolle" Then
'TA in Variable einlesen
strTA = arrData(Zeile_D, 5)
'Zähler auf 1 setzen
iCount = 1
'Liste bis zum Ende abarbeiten
For Zeile_D1 = Zeile_D + 1 To Zeile_DL
'Prüfen, ob TA übereinstimmt
If arrData(Zeile_D1, 5) = strTA Then
'Prüfen, ob Sammelrolle
If arrData(Zeile_D1, 4) = "Sammelrolle" Then
'Prüfen, ob Rollenname verschieden
If arrData(Zeile_D1, 3)  strRolle Then
iCount = iCount + 1
arrData(Zeile_D, Spalte_DL + 1) = False
End If
End If
End If
Next Zeile_D1
If iCount = 1 Then
'TA kommt nur einmal vor
arrData(Zeile_D, Spalte_DL + 1) = True: iCount2 = iCount2 + 1
Else
arrData(Zeile_D, Spalte_DL + 1) = False
End If
iCount = 0
Else
'Einzelrollen
arrData(Zeile_D, Spalte_DL + 1) = False ': iCount2 = iCount2 + 1
End If
End If
Next Zeile_D
End With 'wksData
'Ergebnis-Array dimensionieren
ReDim arrErgebnis(1 To iCount2, 1 To Spalte_DL)
iCount2 = 0
'Alle mit True markierten Zeilen ins ErgebnisArray übernehmen
For Zeile_D = 1 To Zeile_DL
If arrData(Zeile_D, Spalte_DL + 1) = True Then
iCount2 = iCount2 + 1
For Spalte = 1 To Spalte_DL
arrErgebnis(iCount2, Spalte) = arrData(Zeile_D, Spalte)
Next
End If
Next Zeile_D
Application.ScreenUpdating = False
With wksErgebnis
'Inhalte löschen
.UsedRange.ClearContents
'Ergebnis-Array eintragen
.Cells(1, 1).Resize(iCount2, Spalte_DL) = arrErgebnis
End With
Application.ScreenUpdating = True
Erase arrErgebnis, arrData
End Sub

Anzeige
AW: Extrem große Datenmengen verarbeiten und zuordnen
19.11.2014 05:04:31
Barry
Guten Morgen Franz,
großartig. Wo hast Du das denn so schnell hergezaubert?
Ich habe noch nie mit VBA-Scripts gearbeitet, höchstens bereits erstellte benutzt. Also ich gehe in die "Entwickleransicht", kopiere Dein Script und aktiviere ein Kontrollkästchen. Makro ausführen und dann sehe ich ob es läuft. Bei Fehlermeldung "Debug"....ich werde es einfach probieren und mich heute abend oder morgen wieder melden.
Bis dahin erst einmaml ganz herzlichen Dank an Dich, Franz.
Gruss, Barry

Anzeige
AW: Extrem große Datenmengen verarbeiten und zuordnen
19.11.2014 10:54:15
fcs
Hallo Barry,
im Makro ist noch ein kleiner aber folgenschwerer Fehler enthalten, den ich beim Testen übersehen hab.
Es muss einmal Zeile_D1 statt Zeile_D in der inneren For-Next-Schleife sein
Gruß
Franz
                'Prüfen, ob Rollenname verschieden
If arrData(Zeile_D1, 3)  strRolle Then
iCount = iCount + 1
arrData(Zeile_D1, Spalte_DL + 1) = False
End If

Anzeige
AW: Extrem große Datenmengen verarbeiten und zuordnen
19.11.2014 17:40:37
Barry
Hallo Franz,
ich habe Dein Makro getestet. Erst gab es Probleme wie "Index außerhalb des gültigen Bereichs" und "Typen unverträglich", doch dann funktionierte es einwandfrei.
Ich habe einen Kollegen zu Rate gezogen. Seine Überlegungen sind:
1. Prüfe Sammelrolle
2. wenn ja, prüfe 1. Zeile gleiche Rolle bis n (n also letzte Zeile)
3. wenn nein TA - Sammelrolle = TA Prüfrolle
4. wenn ja Ergebnisfeld: Sammelrolle, TA, Rollenname
Also das Ergebnisfeld ist das Entscheidende und das muss hinreichend definiert sein.
Einzel- oder Sammelrolle ist eigentlich nicht das Entscheidende.
Sondern alle TAs zur gegebenen Sammelrolle, welche dieser TAs sind in welchen anderen Rollen enthalten? Also im Ergebnisfeld soll stehen: Sammelrolle 1 - alle zugehörigen TAs (TA1 - TA1000) und alle anderen Rollen, welche die TAs von Sammelrolle 1 enthalten.
Das Ergebnis soll damit eine Entscheidungsbasis liefern: TA 1 nur in Sammelrolle 1 enthalten -BEHALTEN
oder TA1 auch in anderen Rollen (egal ob andere Sammel- oder Einzelrollen) enthalten - LÖSCHEN
Ist vielleicht auch zu aufwendig?
Gruss, Barry

Anzeige
AW: Extrem große Datenmengen verarbeiten und zuordnen
20.11.2014 12:24:13
fcs
Hallo Barry,
ich hab mal versucht das Makro in die Richtung umzuschreiben.
Im Ergebnisblatt werden im Moment alle Zeilen angezeigt. Diese kann man jetzt per Autofilter oder auch Pivot-Bericht zeilenmäßig komprimieren.
Das sollte zumindest für weitere Modifikationen des Makros/der Prüfungen im Makro eine Basis sein.
Gruß
Franz
Deine Beispieldatei mit Makr (alt und neu)
https://www.herber.de/bbs/user/93907.xlsm

Anzeige
AW: Extrem große Datenmengen verarbeiten und zuordnen
21.11.2014 04:43:05
Barry
Guten Morgen Franz,
das ist genau das, was ich gesucht habe. Großartig, klasse!! Ich muss anhand der Datengröße das Ergebnisblatt so einstellen, dass immer nur eine Rolle mit ihren zugehörigen TAs dargestellt wird. Franz, ein ganz großes Dankeschön an Dich und die Mühe, die Du Dir gemacht hast. Vielen, vielen Dank!! Gruss, Barry

Anzeige
AW: Extrem große Datenmengen verarbeiten und zuordnen
20.11.2014 05:01:40
Barry
Guten Morgen Franz,
D1 habe ich korrigiert aber das ist es nicht.
Das Geheimnis liegt in der richtigen Definition des Ergebnisfeldes.
Anderer Ansatz:
neuer Tab: Eingabe einer beliebigen Rolle, Aktivierung Makro und als Ergebnis alle TAs zu dieser Rolle und alle Rollen zu diesen TAs.
Ich kann mich da leider so schlecht artikulieren, worauf ich eigentlich hinaus will.
Gruss,
Barry
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Extrem große Datenmengen in Excel verarbeiten


Schritt-für-Schritt-Anleitung

Um große Datenmengen in Excel zu verarbeiten und zu analysieren, folge diesen Schritten:

  1. Datenstruktur vorbereiten:

    • Erstelle zwei Tabellenblätter: „Daten“ und „Ergebnis“.
    • Sorge dafür, dass die Daten in der Tabelle „Daten“ gut strukturiert sind. Die Spalten sollten wie folgt benannt werden: User ID, Rollenname, Rollentyp, TA, TA Beschreibung, CLUSTER, Lager, Sales Org.
  2. VBA-Makro erstellen:

    • Öffne die „Entwickleransicht“ in Excel.
    • Füge ein neues Modul hinzu und kopiere den folgenden VBA-Code hinein:
      Sub TA_Sortieren_extrahieren()
      ' Hier kommt der Code aus dem Forumbeitrag
      End Sub
    • Achte darauf, dass Du die Makros aktivierst und bei der Ausführung auf mögliche Fehler achtest.
  3. Daten filtern und sortieren:

    • Verwende Autofilter, um die Daten nach Rollentyp, Rollenname und TA zu sortieren. Dies hilft, die Übersichtlichkeit zu erhöhen.
  4. Ergebnisse prüfen:

    • Führe das Makro aus und überprüfe die Ergebnisse im „Ergebnis“-Tab. Hier sollten alle relevanten TAs und deren Zugehörigkeiten angezeigt werden.

Häufige Fehler und Lösungen

  • Index außerhalb des gültigen Bereichs:

    • Stelle sicher, dass die verwendeten Indizes im VBA-Code auf existierende Zeilen und Spalten verweisen.
  • Typen unverträglich:

    • Überprüfe, ob die Datentypen in den Zellen übereinstimmen. Excel kann Probleme haben, wenn z.B. Text und Zahlen in denselben Spalten gemischt werden.
  • AutoFilter zeigt keine Daten an:

    • Achte darauf, dass die Filter korrekt gesetzt sind und dass keine leeren Zeilen zwischen den Daten vorhanden sind.

Alternative Methoden

Wenn Du Schwierigkeiten mit Excel hast, große Datenmengen auszuwerten, kannst Du überlegen, die Daten in Microsoft Access zu importieren. Access kann große Datenmengen besser verwalten und bietet leistungsstarke Abfragefunktionen, die in Excel nicht immer verfügbar sind.


Praktische Beispiele

Angenommen, Du hast eine große Tabelle mit 135.000 Zeilen. Du möchtest herausfinden, welche TAs nur in einer bestimmten Sammelrolle enthalten sind. Mit dem folgenden Ansätzen kannst Du dies erreichen:

  • VBA-Makro: Nutze das oben angegebene Makro, um die TAs zu extrahieren und in das Ergebnisblatt zu übertragen.
  • Pivot-Tabellen: Erstelle eine Pivot-Tabelle, um die Daten nach Rollentyp und TA zu aggregieren, auch wenn die ursprüngliche Tabelle zu groß ist, um sie direkt zu analysieren.

Tipps für Profis

  • Vermeide unnötige Berechnungen: Schalte die Bildschirmaktualisierung während der Makroausführung aus, um die Performance zu steigern.
  • Nutze Arrays: Wenn Du mit großen Datenmengen arbeitest, übertrage die Daten in ein Array, um die Verarbeitungsgeschwindigkeit zu erhöhen.
  • Regelmäßige Sicherungen: Bei der Arbeit mit großen Datenmengen, stelle sicher, dass Du regelmäßige Sicherungen machst, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich große Datenmengen in Excel importieren? Verwende die Funktion „Daten abrufen“ in Excel, um Daten aus verschiedenen Quellen wie CSV, Access oder SQL-Datenbanken zu importieren.

2. Gibt es eine Obergrenze für die Anzahl der Zeilen in Excel? Ja, Excel hat eine maximale Zeilenanzahl von 1.048.576 in einer Tabelle. Bei größeren Datenmengen solltest Du Alternativen wie Access in Betracht ziehen.

3. Wie kann ich die Performance von Excel bei großen Datenmengen verbessern? Reduziere die Anzahl aktiver Formeln, verwende Filter und sortiere die Daten, um die Verarbeitungsgeschwindigkeit zu erhöhen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige