我创建了一个用于文本分析的 VBA 代码,但在运行时遇到了问题。我刚刚在 Google 上找到了关于使用 excel 内置函数的建议,但它并没有提高运行时间。
这是我使用 VBA 的问题。我有一个大约 30k 单元格的列表,其中包含文本(平均一两个句子)和一个 1k 个关键字的列表,它们都有一个数字分数。对于 30k 个单元格中的每一个,我想查看该单元格包含哪些关键字,并计算找到的关键字的分数总和。
简而言之,这是我现在解决问题的方法:
在 30k 文本单元上循环
循环关键字
检查关键字是否在文本单元格中,如果是,则添加关键字的分数
我还尝试使用搜索内置功能:
循环关键字
在包含 30k 文本单元格的整个工作表上搜索关键字
找到关键字后,在相应的单元格上添加分数。
运行时间没有显着变化。
您可以在下面找到我的第一种方法的代码:
'Loop on all the 30k text cells
For i = 2 To last_textcell
'loop on the number of different category of scores, setting intial scores to zero.
For k = 1 To nb_score - 1
Score(k) = 0
Next k
j = 2
'loop on the 1k keywords
Do While j < last_keywords
!search if the keyword is in the text cell
If UCase(Sheets("DATA").Range("V" & i).Value) Like "*" & UCase(Sheets("Keywords").Range("A" & j).Value) & "*" Then
'if the keyword is found, add the score of the keyword to the previous score
For l = 1 To nb_score - 1
Score(l) = Score(l) + Sheets("Keywords").Range("B" & j).Offset(0, l - 1).Value
Next l
End If
j = j + 1
Loop
'paste the score
For k = 1 To nb_categ - 1
Sheets("DATA").Range("CO" & i).Offset(0, k - 1).Value = Score(k)
Next k
Next i
您对如何提高性能有任何提示吗?
非常感谢!