Ich bin neu in Excel VBA-Code, und ich brauche Hilfe, diesen Code zu optimieren. Es macht genau das, was ich möchte, dauert aber fast 30 Sekunden, was für die Endbenutzer nicht akzeptabel ist.Optomizing Excel VBA mit mehreren Schleifen
Der Zweck ist zu beurteilen, wie oft ein Wort mit Eingaben als Sätze verwendet wird. Im Blatt "Raw" ist die erste Spalte der ganze Satz. Die zweite ist eine Zählung, wie viele Wörter in dem Satz sind. Und die dritte 100. sind das erste, zweite, dritte .... Wort im Satz. Bis zu 1.000 Sätze werden gleichzeitig analysiert.
Es wird dann nur in die erste Spalte von "OneColumn" eingefügt, wenn sie eindeutig sind. Ich habe versucht, alles einzufügen und dann Duplikate zu entfernen, aber das dauerte ungefähr 45 Sekunden.
Ich bin sicherlich offen für andere Möglichkeiten zu analysieren, wie oft ein Wort verwendet wird, aber ich konnte nicht herausfinden, wie es in den Zellen zum Zählen zu überprüfen, ohne sie zu brechen.
Ich würde jede Hilfe sehr schätzen.
Option Explicit
Sub ListUniqueWords()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim StartTime As Double
Dim SecondsElapsed As Double
StartTime = Timer
i = 2
j = 3
k = 2
'i=row j=column k=paste into row
Do While i < 1001
j = 3
Do While j < 103
If Sheets("Raw").Cells(i, j).Value <> "" And Sheets("Raw").Cells(i, j).Value <> " " And Sheets("OneColumn").Range("A2:A2000").Find(Sheets("Raw").Cells(i, j), LookAt:=xlWhole) Is Nothing Then
Worksheets("Raw").Activate
Cells(i, j).Select
Selection.Copy
Worksheets("OneColumn").Activate
Cells(k, 1).Activate
ActiveCell.PasteSpecial Paste:=xlPasteValues
k = k + 1
j = j + 1
Else
j = j + 1
End If
Loop
i = i + 1
Loop
SecondsElapsed = Round(Timer - StartTime, 2)
MsgBox "This code ran successfully in " & SecondsElapsed & " seconds", vbInformation
End Sub
Wenn Ihr Code funktioniert, aber Sie möchten, dass er verbessert wird, sollten Sie die Frage hier löschen und stattdessen auf http://codereview.stackexchange.com/ veröffentlichen. –
Ich wusste nicht einmal, dass es existiert. Vielen Dank John! –
Es ist nützlich zu wissen, dass diese Seite existiert, aber jetzt, wo Sie bereits mindestens eine Antwort haben, sollten Sie sie hier belassen, da Cross-Posting verpönt ist. –