У меня есть столбец с ответами, которые люди давали, и список всех возможных правильных ответов. Я пытаюсь понять, как я могу получить 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» не входит в список правильных ответов) , и так далее.
Я предполагаю, что это лучше всего делать с помощью макроса, а не формулы, но я действительно не знаю, с чего начать, поэтому любая помощь будет очень признательна. Для меня не имеет значения, основано ли решение на макро- или формуле. Спасибо!
2 ответа
Если у вас есть правильные слова в списке, по одному слову в ячейке, например, в Z2:Z20
без пробелов, вы можете использовать эту формулу в B1, скопированном вниз
=SUMPRODUCT(ISNUMBER(SEARCH(" "&Z$2:Z$20&","," "&A1&","))+0)
Вот решение на основе макроса (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) очень просты в установке и использовании:
- ALT-F11 открывает окно VBE
- ALT-I ALT-M открывает новый модуль
- вставьте материал и закройте окно VBE
Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx
Чтобы удалить UDF:
- откройте окно VBE, как указано выше
- очистить код
- закройте окно 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 :
Похожие вопросы
Новые вопросы
excel
Только для вопросов по программированию объектов или файлов Excel или по разработке формул. Вы можете комбинировать тег Excel с тегами и вопросами VBA, VSTO, C#, VB.NET, PowerShell, OLE и другими тегами и вопросами, связанными с программированием, если это применимо. НЕ используйте с другим программным обеспечением для работы с электронными таблицами, например [google-sheets].