Я новичок в коде Excel VBA, и мне нужна помощь в оптимизации этого кода. Он делает именно то, что я хочу, но это займет почти 30 секунд, что не будет приемлемо для конечных пользователей.Оптимизация Excel VBA с несколькими циклами
Цель состоит в том, чтобы оценить, как часто используется слово с вложенными предложениями. В листе «Сырье» первая колонка - это все предложение. Во-вторых, количество слов в предложении. И третье-100-е - первое, второе, третье ... слово в предложении. Одновременно анализируется до 1000 предложений.
Затем он вставляется в первый столбец «OneColumn», только если они уникальны. Я пробовал вставлять все, а затем удалять дубликаты, но это продолжалось около 45 секунд.
Я, конечно, открыт для других способов анализа того, как часто используется слово, но я не мог понять, как его проверить в ячейках для подсчета, не нарушая их.
Я был бы очень признателен за любую помощь.
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
Если ваш код работает, но вы хотите его улучшить, вы должны рассмотреть вопрос об этом здесь и опубликовать его на http://codereview.stackexchange.com/. –
Я даже не знал, что существует. Большое вам спасибо! –
Полезно знать, что этот сайт существует, но теперь, когда у вас уже есть хотя бы один ответ, вы должны, вероятно, оставить его здесь, так как перекрестная проводка нахмурилась. –