2

Я создаю расписание в Excel.

У меня есть список имен слева, рядом с ним их расписание каждые 15 минут, начиная с 11 утра (столбец 11 утра, 11:15 утра и т.д.).

Каждые 15 минут им будут давать задание, например, E (электронная почта), M (встреча), B (перерыв).

Мне нужно показать в другой таблице их графики для каждой задачи. Как, например, у меня будет столбец «Электронная почта», и для каждого имени в столбце «Электронная почта» будут отображаться графики для задач «Электронная почта» на основе первой таблицы с запланированным заданием каждую минуту.

Столбец электронной почты должен показывать 11: 00-12: 00 (пример).

Есть идеи?

1 ответ1

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)

Перетащите его горизонтально и вертикально, чтобы заполнить ячейки.

Я думаю, что этой идеи достаточно, чтобы создать решение вашей задачи.

PS. Обратите внимание - в расписании есть дополнительный столбец.

PPS. После отладки сделайте функцию Volatile.

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