Я создаю расписание в Excel.
У меня слева есть список имен, рядом с ним — их расписание каждые 15 минут, начиная с 11:00 (колонка «11:00», «11:15» и т. д.).
Каждые 15 минут им будет даваться задание, например, E (электронная почта), M (встреча), B (перерыв).
Мне нужно показать в другой таблице их расписания для каждой задачи. Например, у меня будет столбец Email, и для каждого имени столбец email покажет их расписания для задачи Email на основе первой таблицы с их запланированной задачей каждые минуты.
В столбце «Электронная почта» должно быть указано время с 11:00 до 12:00 (пример).
Есть идеи?
решение1
Код:
Function MakeCompact(times As Range, shedules As Range, letter As String) As String
Dim i As Integer, n As Integer
If times.Cells.Count <> shedules.Cells.Count + 1 Then
MakeCompact = "Error. Wrong source data."
Exit Function
End If
n = times.Cells.Count
MakeCompact = ""
For i = 1 To n
If letter = shedules.Cells(1, i).Value Then
If Right(MakeCompact, 1) <> "-" Then
MakeCompact = MakeCompact & "," & times.Cells(1, i).Value & "-"
End If
Else
If Right(MakeCompact, 1) = "-" Then
MakeCompact = MakeCompact & times.Cells(1, i).Value
End If
End If
Next
MakeCompact = Mid(MakeCompact, 2)
End Function
Использование:
Создайте таблицу:
A B C D E F G
1 name 1 2 3 4 5 6
2 bob m m b m m
3 fred b m e e
4
5 m b e
6 bob
7 fred
Диапазон A1:G7 — исходные данные (строка 1 — заголовок).
Диапазон A5:D7 — это таблица, которую мы хотим заполнить.
Вставьте в B6 формулу:
=MakeCompact($B$1:$G$1;$B2:$F2;B$5)
Перетащите его по горизонтали и вертикали, чтобы заполнить ячейки.
Я думаю, что этой идеи достаточно для создания решения Вашей задачи.
P.S. Обратите внимание - есть дополнительная колонка над временем расписания.
PPS. После отладки сделайте функцию Volatile.