Excel 2010 Перемещение данных

Excel 2010 Перемещение данных

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

Вот пример таблицы.

|   A    +   B    +       C       +   D   +   E    +   F    |
|--------+--------+---------------+-------+--------+--------|
| FNAME  | LNAME  | FULLNAME      | GRADE | EFFORT | CODE   |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | A     |        | GRADE  |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | H     |        | EFFORT |
|--------+--------+---------------+-------+--------+--------|
| FNAME2 | LNAME2 | FNAME2 LNAME2 | C     |        | GRADE  |
|--------+--------+---------------+-------+--------+--------|

Мне нужно переместить оценку усилий в столбец усилий, но в другую строку. Пример ниже.

|   A   +   B   +     C     +   D   +   E    +   F    |
|-------+-------+-----------+-------+--------+--------|
| FNAME | LNAME | FULLNAME  | GRADE | EFFORT | CODE   |
|-------+-------+-----------+-------+--------+--------|
| NAME1 | NAME1 | NAMENAME1 | A     |        | GRADE  | ←      To column E here         ←
|-------+-------+-----------+-------+--------+--------|                                 ↑
| NAME1 | NAME1 | NAMENAME1 | H     |        | EFFORT | → Move this Grade from column D ↑
|-------+-------+-----------+-------+--------+--------|

Итак, пример того, чего я хочу...

|   A    +   B    +       C       +   D   +   E    +   F    |
|--------+--------+---------------+-------+--------+--------|
| FNAME  | LNAME  | FULLNAME      | GRADE | EFFORT | CODE   |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | A     | H      | GRADE  |
|--------+--------+---------------+-------+--------+--------|
| FNAME2 | LNAME2 | FNAME2 LNAME2 | C     |        | GRADE  |
|--------+--------+---------------+-------+--------+--------|

Самое интересное, что не у всех студентов есть оценка за усилия, и если у них ее нет, то и строки для нее не будет. Также иногда будет дополнительная строка с комментариями и т. д., так что данные не являются постоянными.

решение1

На новом листе скопируйте заголовки ( A1:F1) и введите 1 в вспомогательный столбец. Я предполагаю, что вы используете Column  G; т.е. cell  G1. Введите

=IF(INDEX(Sheet1!A:A, $G2)<>"", INDEX(Sheet1!A:A, $G2), "")

в  A2, и перетащите/заполните вправо, в  F2. Затем измените  E2на

=IF(INDEX(Sheet1!F:F, $G2+1)="EFFORT", INDEX(Sheet1!D:D, $G2+1), "")

и введите

=IF(INDEX(Sheet1!F:F, $G1+1)="GRADE", $G1+1, $G1+2)

в  G2. Выберите A2:G2и перетащите/заполните вниз до необходимого расстояния.

Затем скройте столбец  G, если хотите.

Column  G— это индекс (на новом листе) строки, Sheet1 из которой мы (в первую очередь) извлекаем данные. Он на единицу больше индекса из предыдущей строки, если только он не указывает на строку, чей CODE равен GRADE, в этом случае мы предполагаем, что это EFFORTстрока, и добавляем два к предыдущей (т. е. пропускаем строку EFFORT). Column  ADи  Fпросто копируются из того же столбца на Sheet1, как индексируется Column  G. Формула в Column  E(EFFORT) проверяет, является ли текущий студент одним из двух с двумя строками (то есть $G2+1ссылается на того же студента с CODE EFFORT), и, если это так, извлекает оценку EFFORT из Column  Dэтой второй строки.

Для этих данных:

+   A   +   B    +      C       +   D   +   E    +   F    +
+-------+--------+--------------+-------+--------+--------+
| FNAME | LNAME  |   FULLNAME   | GRADE | EFFORT |  CODE  |
+-------+--------+--------------+-------+--------+--------+
| John  | Smith  | John Smith   | A     |        | GRADE  |
| John  | Smith  | John Smith   | H     |        | EFFORT |
| Mary  | Jones  | Mary Jones   | B     |        | GRADE  |
| Isaac | Newton | Isaac Newton | A+    |        | GRADE  |
| Isaac | Newton | Isaac Newton | C     |        | EFFORT |
+-------+--------+--------------+-------+--------+--------+

Я получил такой результат:

электронная таблица

решение2

С этим можно справиться и без поворота.

Основываясь на вашем примере, разместите это в своей Effortколонке Sheet2:

=INDEX(Sheet1!$D$2:$D$10, MATCH(1, (Sheet2!$C2 = Sheet1!$C$2:$C$10) * (Sheet1!$F$2:$F$10 = "EFFORT"), 0))

и нажмите Ctrl+ Shift+ Enter, чтобы вставить формулу массива.

Объяснение

Sheet1!$D$2:$D$10ваш Effortстолбец в исходной таблице на Листе1.

(Sheet2!$C2 = Sheet1!$C$2:$C$10)ищет соответствиеFULLNAME

(Sheet1!$F$2:$F$10 = "EFFORT")ищет соответствие CODE, которое является "УСИЛИЕ"

Оба возвращают логическое значение 0и 1. Если оба условия совпадают (найдена строка с совпадающими FULLNAME и CODE), то функция возвращает 1 ( 1 * 1) MATCH.

Связанный контент