在 Excel 中重组数据

在 Excel 中重组数据

我正在 Excel 中创建一个日程表。

我在左边有一个姓名列表,旁边是他们从上午 11 点开始每 15 分钟的日程安排(上午 11 点列、上午 11:15 列等)。

他们每 15 分钟就会被分配一项任务,如 E(电子邮件)、M(会议)、B(休息)。

我需要在另一个表中显示他们每项任务的时间表。例如,我将有一列电子邮件,对于每个姓名,电子邮件列将根据第一个表显示他们的电子邮件任务时间表,每分钟安排一次任务。

电子邮件栏应显示 11AM-12PM(示例)。

在此处输入图片描述

有任何想法吗?

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

相关内容