У меня есть столбец с ответами, которые люди давали, и список всех возможных правильных ответов. Я пытаюсь понять, как я могу получить 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», B2 должен сказать «12», B3 должен сказать «8» (не «9», поскольку «ekl» не входит в список правильных ответов) , и так далее.

Я предполагаю, что это лучше всего делать с помощью макроса, а не формулы, но я действительно не знаю, с чего начать, поэтому любая помощь будет очень признательна. Для меня не имеет значения, основано ли решение на макро- или формуле. Спасибо!

0
abclist19 30 Дек 2014 в 19:49

2 ответа

Лучший ответ

Если у вас есть правильные слова в списке, по одному слову в ячейке, например, в Z2:Z20 без пробелов, вы можете использовать эту формулу в B1, скопированном вниз

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

2
barry houdini 30 Дек 2014 в 19:54

Вот решение на основе макроса (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

Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно VBE

Чтобы использовать UDF из Excel:

= MyFunction (А1 )

Чтобы узнать больше о макросах в целом, смотрите:

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

1
Community 8 Май 2018 в 21:49