【发布时间】:2020-03-26 06:33:48
【问题描述】:
我正在尝试创建一个函数来确定 VBA 中推文的情绪。该函数应检查推文中的每个单词,如果该单词作为我的 Excel 表中的肯定列表或否定列表中的关键字之一存在(显示为 positiveRng 和negativeRng),它将影响该函数显示的情绪分数。一个正面的关键字应该在情感得分上加 10,一个负面的关键字应该去掉 10。这是我到目前为止的代码
Function sentimentCalc(tweet As String) As Integer
Dim positiveRng As Range
Dim negativeRng As Range
Set positiveRng = Worksheets("Keywords").Range("A2:A54")
Set negativeRng = Worksheets("Keywords").Range("B2:B54")
Dim twords As Variant
twords = Split(tweet, " ")
Dim Result As Integer
For i = LBound(twords) To UBound(twords)
If StrComp(twords(i), positiveRngCell.Value, vbTextCompare) = 0 Then
Result = Result + 10
ElseIf StrComp(twords(i), negativeRngCell.Value, vbTextCompare) = 0 Then
Result = Result - 10
End If
Next i
sentimentCalc = Result
End Function
由于某种原因,我不断收到#NAME?错误,如果有人可以帮助我,将不胜感激。谢谢!
【问题讨论】:
-
positiveRngCell和negativeRngCell未在您的函数中声明或填充。在尝试将其作为 UDF 之前,请通过从 Sub 调用它来测试您的函数。然后就可以调试了。 -
twords = Split(tweet, " ")将为您提供带有标点符号和笑脸的单词,如果推文中有双空格,则还会为您提供由单个空格组成的“单词”。循环工作表单元格是您可以设计的最慢的方式。考虑在相邻列中具有估值(+10 或 -10)的单个单词列表,并通过 VLookup() 获得估值。 -
@Variatus 确定这是一个家庭作业,并且确定两个范围内的两个列表是给定的。