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

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.

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

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

Anzeige
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

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

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

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige