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 にします。

関連情報