Существует необходимость проверить тест. Для этого необходимо сравнить содержимое одной ячейки с содержимым другой ячейки и в зависимости от варианта засчитать как правильный или неправильный ответ (0 или 1). Эту формулу я прописал.
Но теперь мне нужно прописать такую формулу, которая могла бы проверить задания с несколькими ответами. Задание считается выполненным, если правильно выбраны два варианта ответа и оценится в таком случае задание в 2 балла. За неполный ответ - правильно назван один из двух ответов или названы три ответа, из которых два верные, - выставляется 1 балл. Остальные варианты оценятся в 0. Все ответы даются в цифрах. Если есть решение этой проблемы, прошу помочь!
Пример: правильный ответ 34, ответ 43 тоже верный и оцениваются такие ответы в 2 балла. Ответы типа 13, 31, 32, 23, 53, 35, 42, 24, 45, 54 - где даны два ответа (две цифры), но правильный из них только один (там где встречаются цифры 3 или 4) и оцениваются такие ответы в 1 балл. Ответы типа 345, 435, 534, 341, 143, 431, 413, 453, 354 и т.д. (три цифры из которых обязательно встречаются цифры 3 и 4) тоже оцениваются в 1 балл. Положение цифры в числе не имеет значения, главное, чтобы она там была. Ответ, где указана лишь одна цифра 3 или 4 тоже верный и оценивается в 1 балл. Ответы типа 1234, 2345 и т.д., где 4 цифры и более оцениваются в 0 баллов в независимости от того, есть ли там цифры 3 и 4.
Private Sub Worksheet_Activate()
arrV = Sheets(1).[a1:d3]: arrM = Sheets(2).[a1:d3]
For i = 2 To 3
For j = 2 To 4
s = 0
If Len(arrV(i, j)) < 4 Then
For h = 1 To Len(arrV(i, j))
If CStr(arrM(i, j)) Like "*" & Mid(arrV(i, j), h, 1) & "*" Then s = s + 1
Next h
End If
Cells(i, j) = s
Next j: Next i
End Sub
Спасибо за отклик, НО: Макрос считает ответ 123 (и подобные ответы) в 1 балл, хотя должен считать в 0 баллов, так как совпадений одно из трех (правильный ответ 34). Ответ 345 также должен считаться в 1 балл, а считается в 2 балла. Может возможно подкорректировать данный макрос, я, к сожалению, не умею работать с макросами
Option Explicit
Sub qwe()
Dim a$, b$, i%, ii%, iii%, summ%
For i = 2 To 4
For ii = 2 To 3
a = CStr(Sheets(2).Cells(ii, i).Value)
b = CStr(Sheets(1).Cells(ii, i).Value)
For iii = 1 To Len(b)
If InStr(1, a, Mid(b, iii, 1)) Then summ = summ + 1 Else summ = summ - 1
Next iii
If summ < 0 Then summ = 0
Sheets(3).Cells(ii, i).Value = summ
summ = 0
Next ii
Next i
End Sub
НО: нет связи с вариантами...Т.е. должна быть связь номера варианта на стр. "ВВОД ОТВЕТОВ" с "МАТРИЦОЙ ОТВЕТОВ". Например, на странице "ВВОД ОТВЕТОВ" в ячейке А2 или A3 может стоять как первый, так и второй вариант, а может там и там только первый, а может там и там только второй. Необходимо, чтобы макрос срабатывал в зависимости от вариантов прописанных в этих ячейках.
Если есть возможность, помогите подкорректировать макрос.
И еще... извините, конечно, за наглость, хотелось бы, чтобы диапазон проверки был шире, так как страница ВВОД ОТВЕТОВ может содержать ответы до 30 участников, а вариантов в МАТРИЦЕ ОТВЕТОВ (с чем сравниваем все ячейки с ВВОД ОТВЕТОВ) допустим только два.
Это все потому, что условие задачи какое-то мутное. Что вам стоило сделать нормальный файл пример? Вы же просто скопировали одну таблицу три раза. сделали бы нормальную таблицу с тремя отвечающими первого варианта и тремя второго. Ответы правильные и не правильные, двойные и нет. Но вам видимо некогда было это делать и вы предоставили честь разбираться с задачей нам самим. я только сейчас например получил уверенность что варианты это столбец а не строка. Раньше же мог только гадать.