计算列表中出现的单词数量

时间:2014-12-30 16:49:16

标签: excel

我有一列人们给出的文字游戏答案,以及所有可能正确答案的列表。我试图弄清楚如何计算出每个人的响应单元中出现的右侧答案列表中有多少单词。

因此,A栏包含人们的回复数据,如下所示:

glare, lake, car
rag, clear, gear, lear, cake, glare, rack, keg, car, care, leak, ace
cake, lake, lark, car, rake, cage, real, ekl, rage
Leak, Rage, Gale, Kale, Rag, Lag, Large, Lack, Real, Rake, Race, Car, Care, Leg, Cage

这里是所有正确答案的清单:

grackle, calker, lacker, rackle, argle, cager, carle, clear, clerk, crake, creak, glace, glare, grace, lacer, lager, laker, large, regal, acre, ager, alec, cage, cake, calk, care, cark, carl, clag, crag, earl, egal, gale, gear, geck, kale, lace, lack, lake, lark, leak, lear, race, rack, rage, rake, rale, real, reck, ace, age, ale, arc, are, ark, car, cel, ear, elk, era, erg, gae, gal, gar, gel, kae, kea, keg, lac, lag, lar, lea, leg, lek, rag, rec, reg

所以,第一个人写了3个正确的答案,所以B1应该说" 3&#34 ;, B2应该说" 12",B3应该说" 8" (不是" 9"因为" ekl"不在正确答案列表中),等等。

我认为最好用宏而不是公式来完成,但我真的不知道从哪里开始,所以任何帮助都会受到惊喜。如果解决方案是基于宏观或基于公式的,那对我来说并不重要。谢谢!

2 个答案:

答案 0 :(得分:2)

如果列表中有正确的单词,每个单元格有一个单词,例如Z2:Z20没有空格,那么您可以在B1中复制使用此公式

=SUMPRODUCT(ISNUMBER(SEARCH(" "&Z$2:Z$20&","," "&A1&","))+0)

答案 1 :(得分:1)

这是一个基于宏(UDF)的解决方案。在标准模块中输入以下 UDF

Public Function CorrectCount(r1 As Range, r2 As Range) As Long
    Dim v1 As String, v2 As String
    CorrectCount = 0
    v1 = "," & r1.Value & ","
    For Each r In r2
        v2 = "," & r.Value & ","
        If InStr(1, v1, v2) > 0 Then
            CorrectCount = CorrectCount + 1
        End If
    Next r
End Function

用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel使用UDF:

      = myfunction的(A1)

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      有关UDF的详细信息,请参阅:

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      必须启用宏才能使其生效!

      以下是一个示例,其中正确答案列表位于 F 列中:

      demo