ich habe ein Problem bzgl. des Befüllens einer Kreuztabelle (so heisst auch das Tabellenblatt).
Folgende Situation:
In Spalte A stehen Usernamen (A2:A19000) - In Zeile 1 stehen Softwareprofile (A1: BNN1).
Es sind also 19.000 User und ca. 14.500 Softwareprofile.
In einer Anderen Tabelle ("Grunddaten") stehen 250.000 Datensätze in Spalte D die sich aus
dem Username und dem Softwareprofil zusammensetzen (Kombination).
Beispiel: Username = willi0001 Softwareprofil = S01_Excel2010 Kombi = willi0001S01_Excel2010
In der Kreuztabelle soll nun in dem Kreuzungsfeld von Zeile willi0001 und der Spalte S01_Excel2010
ein "X" gesetzt werden.
Ich habe dies mit folgenden 2 (zugegebenermaßen laienhaften) Makros realisiert:
Public Kombi, Gefunden As String
Sub Kreuze()
Sheets("Kreuztabelle").Select
For Z = 2 To 19424
Sheets("Kreuztabelle").Select
User = Cells(Z, 1).Value
For S = 2 To 1448
Profil = Cells(1, S).Value
Kombi = User & Profil
Gefunden = ""
Call Suche
Sheets("Kreuztabelle").Select
Select Case Gefunden
Case Is = "JA"
Cells(Z, S).Value = "X"
End Select
Next S
Next Z
End Sub
Sub Suche()
Sheets("Daten").Select
On Error GoTo weiter
Cells.Find(What:=Kombi, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Gefunden = "JA"
GoTo ende
weiter:
Gefunden = "Nein"
ende:
End Sub
Dies läuft aber aufgrund der hohen Datenmenge unendlich langsam bzw. lange.
Wie kann ich meine Anforderung entsprechend tunen, so dass ich schnell eine mit "X"-en
ausgefüllte Kreuztabelle erhalte?
Danke im Voraus für diverse Tipps.
Gruß,
Ptonka