在 Excel 中重組數據

在 Excel 中重組數據

我正在 Excel 中建立時間表。

我在左邊有一個名單,旁邊是他們從上午 11 點開始每 15 分鐘的時間表(上午 11 點欄、上午 11:15 等)。

他們每 15 分鐘就會被指派一個任務,例如 E(電子郵件)、M(會議)、B(休息)。

我需要在另一個表格中顯示他們每項任務的時間表。例如,我將有一個電子郵件列,對於每個名稱,電子郵件列將根據第一個表顯示他們的電子郵件任務計劃,並每分鐘顯示他們的計劃任務。

電子郵件列應顯示上午 11 點至下午 12 點(範例)。

在此輸入影像描述

有任何想法嗎?

答案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)

水平和垂直拖曳它以填充單元格。

我認為這個想法足以創建您的任務解決方案。

附言。請注意 - 在時間表上還有一個額外的欄位。

聚苯硫醚。調試後使函數變為Volatile。

相關內容