我有一列人们给出的文字游戏答案,以及所有可能正确答案的列表。我试图弄清楚如何计算出每个人的响应单元中出现的右侧答案列表中有多少单词。
因此,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"不在正确答案列表中),等等。
我认为最好用宏而不是公式来完成,但我真的不知道从哪里开始,所以任何帮助都会受到惊喜。如果解决方案是基于宏观或基于公式的,那对我来说并不重要。谢谢!
答案 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)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从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 列中: