Я хочу найти оценки, основанные на значении ячейки - PullRequest
0 голосов
/ 07 января 2019

enter image description here

Я использую следующий код, но вместо оценок он показывает только «FAIL».

Sub TABLEGRADESCELLREF()

Worksheets("TABLE").Activate
Range("C61").Select

Do Until ActiveCell.Offset(0, -2).Value = ""
ActiveCell.Formula = "=IF(R[0]C2=R61..CF DRT56Y7"
ActiveCell.Offset(1, 0).Select

Loop

End Sub

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Вы можете использовать функцию Vlookup, чтобы получить желаемый результат

Пожалуйста, смотрите входные данные из рисунка ниже

enter image description here

тогда попробуйте с кодом ниже

Sub TABLEGRADESCELLREF()
    Dim i As Variant
    Dim lastrow As Variant
    Worksheets("TABLE").Activate
    lastrow = Range("C61").End(xlDown).Row
    For i = 61 To lastrow
        Range("E" & i).Value = Application.WorksheetFunction.VLookup(Range("D" & i), Range("$J$61:$L$66"), 3, True)
    Next i
End Sub
0 голосов
/ 07 января 2019

Раствор только по формуле

  1. Превратите свои оценки / баллы в отсортированные от наименьших баллов к наивысшим баллам:
    (0, 50, 60, 70, 90) Это необходимо для работы MATCH. Также используйте только значения без >= знаков.
  2. Используйте следующую формулу для вашего первого класса:
    =INDEX($I$60:$I$64,MATCH(B61,$H$60:$H$64,1))
  3. Копирование формулы в другие классы.

enter image description here

Результат
enter image description here

0 голосов
/ 07 января 2019

Это код, который должен работать для вашего точного примера. Поскольку вы не предоставляете больше подробностей, вам необходимо скорректировать код в соответствии с вашими потребностями. Надеюсь, это поможет вам.

Sub TABLEGRADESCELLREF()

Dim rownumber As Long


With ActiveSheet

For rownumber = 61 To 66
    Select Case .Cells(rownumber, 2).Value
        Case .Cells(rownumber, 2).Value < 50
            .Cells(rownumber, 3).Value = "Fail"
        Case 50 To 59
            .Cells(rownumber, 3).Value = "D"
        Case 60 To 69
            .Cells(rownumber, 3).Value = "C"
        Case 70 To 89
            .Cells(rownumber, 3).Value = "B"
        Case .Cells(rownumber, 2).Value >= 90
            .Cells(rownumber, 3).Value = "A"
    End Select
Next

End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...