Вложенные операторы IF в Excel [По 7 позволенным пределам]

Я пытаюсь создать электронную таблицу, которая автоволшебно дает класс студенту на основе их меток, которые они получили.

Я, по-видимому, поразил вложенный предел оператора IF Excel, который равняется 7.

Вот мой если оператор:

=IF(O5>0.895,"A+",IF(O5>0.845,"A",IF(O5>0.795,"A-",IF(O5>0.745,"B+",IF(O5>0.695,"B",IF(O5>0.645,"B-",IF(O5>0.595,"C+",IF(O5>0.545,"C","D"))))))))

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

Его все еще пропавшие без вести класса C-и что-либо ниже должно быть награждено меткой D.

Это - схема классификации, которую я пытаюсь создать...:

+ 89.500 - 100.000 передачи с отличием

84.500 - 89.490 передач с отличием

A-79.500 - 84.490 передачи с отличием

B + 74.500 - 79.490 передач с заслугой

B 69.500 - 74.490 передачи с заслугой

B-64.500 - 69.490 передач с заслугой

C + 59.500 - 64.490 передачи

C 54.500 - 59.490 передач

C-49.500 - 54.490 передачи

D 0.000 - 49.490 указанных сбоев

Я не возражал бы спускаться по маршруту VBA, однако мое понимание языка VB абсолютно минимально (не любите его)..., если это становится слишком утомительным, я думал для создавания маленького php/mysql приложения вместо этого.

9
задан Lance Roberts 21 April 2011 в 20:46
поделиться

3 ответа

Решение ВПР кажется лучшим. Чтобы добавить сценарий VBA, вы можете вызвать панель инструментов Visual Basic, добавить элемент управления, например кнопку, а затем дважды щелкнуть его. Код этого события открывается в среде Excel VBA. Там вы могли бы добавить код на VB, возможно, что-то вроде этого.

Private Sub CommandButton1_Click()
  Cells(1, 2) = getValue(Cells(1, 1))
End Sub


Private Function getValue(ByVal argMarks As Double)
  If argMarks > 89.5 And argMarks <= 100 Then
    getValue = "A+"
  If argMarks > 84.5 And argMarks <= 89.49 Then
    getValue = "A"

  .
  .
  and so on...

End Function
-1
ответ дан 4 December 2019 в 10:03
поделиться

Вы можете сделать это гораздо более элегантно с помощью формулы VLOOKUP , сделав отдельные таблицы, отображающие нижние границы букв. Таблица сопоставления должна быть отсортирована по возрастанию номера класса.

Например:

Таблица

A     B
0     D
49.5  C-
54    C
59.5  C+
...   ...

Формула:

=VLOOKUP(SomeCell, $A$1:$B$9, 2, TRUE)

Где $ A $ 1: $ B $ 9 - это диапазон с таблицей оценок. (Знаки $ говорят Excel не перемещать ссылку при копировании формулы).
Передача TRUE в качестве последнего аргумента заставит Excel выполнить двоичный поиск, чтобы найти значение, которое (пока данные отсортированы) является именно тем, что вы хотите делать.

21
ответ дан 4 December 2019 в 10:03
поделиться

Простым решением было бы просто разделить формулу на две ячейки

=IF(O5>0.895,"A+",IF(O5>0.845,"A",IF(O5>0.795,"A-",<Other cell ref here>)))

Другая ячейка:

=IF(O5>0.745,"B+",IF(O5>0.695,"B",IF(O5>0.645,"B-",IF(O5>0.595,"C+",IF(O5>0.545,"C","D")))))
0
ответ дан 4 December 2019 в 10:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: