Hallo
Ich mache derzeit eine Arbeitserprobung für eine Ausbildung zum Fachinformatiker und habe ein dickes Buch und eine Aufgabe erhalten um VBA zu erlernen.
Die Aufgabe besteht darin, ein Makro zu schreiben, welches Wortwiederholungen in einem Text zählt und geordnet ausgibt.
Das Programm ist soweit fertig, allerdings ist der Zeitaufwand, trotz Quicksort!, enorm. Ich habe nun getestet welche Abschnitte denn solange brauchen und heraus kam, dass gleich am Anfang das Einlesen des Textes in ein Array mit
ReDim Preserve Text(1 To ActiveDocument.Words.Count)
For j = 1 To Anzahl
If Len(ActiveDocument.Words(j)) > 2 Then
Text(j) = ActiveDocument.Words(j)
End If
Next
diesen Zeitaufwand braucht, der ganze Rest wird unter einer Sekunde abgearbeitet.
Weder ich, noch mein Ausbilder wissen dazu eine schnellere Alternative, sodass ich hier nun fragen möchte, welche Alternativen es denn noch gibt.
Ich vermute ja, dass ActiveDocument.Words() so lange benötigt, da es im Restprogramm nicht nochmal auftaucht, die Frage für mich ist nur: Warum?
Hier noch als Zusatzinfo die Seitenanzahl und die benötigte Zeit dafür, jede Seite hat 545 Wörter:
Seite Zeit (s)
1 0,99
2 4,02
3 9,11
4 16,22
5 25,16
6 36,33
7 49,44
|