У меня есть запрос, который я извлек из базы данных с информацией о студентах. В таблице есть следующие столбцы: StudentID, CourseID, CourseGrade.

Столбец CourseGrade может содержать любое из следующих значений: "Удовлетворительно", "Выше среднего", "Средне", "Удовлетворительно", "Плохо" и, наконец, "Снято".

Есть два советника, которые должны быть назначены этим студентам для консультирования / обучения.

Примечание: студент может быть зачислен только на 1 курс или несколько курсов

Каждый консультант должен быть назначен на одно и то же количество студентов (весь список студентов должен быть разделен пополам, если не существует нечетного числа уникальных идентификаторов StudentID, в этом случае у одного консультанта будет еще один студент). Независимо от количества курсов, на которые зачислен студент, ему должен быть назначен только 1 консультант.


Вот чего я хотел бы достичь:

Я хотел бы добавить четвертый столбец в таблицу с именем CounsellorNbr и пройти через все строки в таблице и поочередно добавлять значения «1» и «2» к каждой записи ученика. Опять же, если один и тот же StudentID появляется в соседних строках на нескольких курсах, оба должны получить одинаковое число в этом новом столбце.

Приемлемая альтернатива добавлению столбца с номером 1 или 2, столбец StudentID может быть выделен одним из двух цветов. Если это проще.

Единственные доступные мне для использования программы - это Microsoft Excel и Access. В конечном счете, я бы предпочел иметь возможность запускать макрос для выполнения этой задачи, так как это не то, что часто приходится делать нетехническим лицам, однако у меня возникают проблемы с определением, какой тип функции потребуется для обхода такого списка, и добавьте значения (или цвета ячеек), как я описал выше.

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

1 ответ1

2

Установите D1 в 1, установите D2 в

=IF(A1=A2, D1, 3-D1)

и перетащите / заполните.  Это говорит: если StudentID в предыдущей строке равен StudentID в текущей строке, то это вторичная строка для этого ученика (то есть, это часть многострочного кластера данных для ученика, и это не первая линия).  В этом случае CounsellorNbr для этой строки должен быть таким же, как CounsellorNbr для предыдущей строки (поскольку обе строки предназначены для одного и того же учащегося).  В противном случае (A1A2), это первая строка для студента, и поэтому мы хотим назначить другой CounsellorNbr из той, что в предыдущем ряду. Есть разные способы сделать это, но самый простой из них - арифметика: вычтите из 3.  3−1 = 2 и 3−2 = 1.

Если в будущем у вас будет более 2 консультантов (скажем, пять), вы можете заменить 3-D1 в приведенной выше формуле на несколько простых людей

IF(D1=5, 1, D1+1)

в котором говорится: «если предыдущий студент получил последнего (5-го) консультанта, то этот получает первого, в противном случае просто переходите к следующему консультанту», или несколько более артистично

MOD(D1,5)+1

который говорит:«Возьмите предыдущий номер советника, разделите на 5, возьмите остаток и добавьте 1».  Это выглядит сложнее, чем это:

  • 1 ÷ 5 равно 0 с остатком 1
  • 2 ÷ 5 равно 0 с остатком 2
  • 3 ÷ 5 = 0 с остатком 3
  • 4 ÷ 5 = 0 с остатком 4
  • 5 ÷ 5 - 1 с остатком 0

так что это работает точно так же, как другая формула; добавить один, если мы не на последнем, в этом случае мы возвращаемся к первому.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .