Условное объединение строк и столбцов для объединения

У меня есть лист посещаемости excel, который выглядит так. Каждый ученик-строка, каждая дата класса-столбец. У меня всего 48 классов, всего 66 студентов (это потому, что сложность решения должна быть осуществимой).

Excel Sheet

теперь для каждой строки, т. е. каждого ученика, я хочу знать даты пропущенных занятий. Для ученика 6 я хочу, чтобы "9,19,23" отображалось в последней ячейке в этой строке.

для каждой строки, Я хочу Сверните количество студентов, которые пропустили занятия в тот день.
Для date= 24 я хочу, чтобы" 7,8,9,10 " отображалось в последней ячейке в этом столбце.

Как сделать эту условную конкатенацию без жесткого кодирования значений для каждой ячейки? Есть ли какая-то формула диапазона, которую я могу использовать?

3
задан Raystafarian
20.01.2023 7:52 Количество просмотров материала 3257
Распечатать страницу

1 ответ

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

В принципе, идея состоит в том, чтобы создать целую сетку операторов IF (по одному для каждой ячейки в основных данных о посещаемости), а затем скрыть все эти столбцы и объединить их значения в один столбец.

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

=IF(B2="a",B&",","")

что это означает, что если ученик в этой строке отсутствовал в данный день, напишите этот день здесь, в противном случае оставьте его пустым. (В $ в B 1$ - это важно, потому что это будет держать выход по первой строке, даже в скопирован версии Формулы.)

затем скопируйте / вставьте эту формулу в полный диапазон ячеек, равный количеству ячеек данных о посещаемости (поэтому, если данные о посещаемости составляют 48 на 66 ячеек, то операторы IF также должны заполнить 48 на 66 тельца.)

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

затем, в столбце справа от всего этого, во второй строке, добавьте формулу примерно так:

=CONCATENATE(X2,Y2,Z2,...etc...)

замените x2,Y2,Z2 и т. д. ячейками операторов IF (вы можете сделать это быстро, нажав на каждую ячейку, а затем нажав клавишу запятой).

при нажатии Enter ячейка должна выглядеть вроде этого: 6,13,18,

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

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

=IF(LEN(X2)>0,LEFT(X2,LEN(X2)-1),"")

замените X2 ячейкой, содержащей объединенную строку. (В том числе, если(LEN (X2)>0 делает так, что вы не получите ошибку, если студент отличная посещаемость.

затем просто скрыть все столбцы, за исключением последнего, и вы хорошо идти!

В качестве альтернативы, я думаю, что VBA имеет функцию concatenateif, которая помогла бы, но я не знаю, как ее использовать.

0
отвечен LvxOne 2023-01-21 15:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх