Ich erstelle einen Zeitplan in Excel.
Auf der linken Seite habe ich eine Liste mit Namen, daneben sind alle 15 Minuten ihre Zeitpläne ab 11:00 Uhr (Spalte 11:00 Uhr, 11:15 Uhr usw. usw.).
Ihnen wird alle 15 Minuten eine Aufgabe zugewiesen, etwa E (E-Mail), M (Besprechung), B (Pause).
Ich muss in einer anderen Tabelle ihre Zeitpläne für jede Aufgabe anzeigen. Ich habe beispielsweise eine Spalte „E-Mail“, und für jeden Namen zeigt die Spalte „E-Mail“ ihre Zeitpläne für E-Mail-Aufgaben basierend auf der ersten Tabelle mit ihren alle Minuten geplanten Aufgaben.
In der E-Mail-Spalte sollte 11:00–12:00 Uhr angezeigt werden (Beispiel).
Irgendwelche Ideen?
Antwort1
Code:
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
Verwendung:
Erstellen Sie die Tabelle:
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
Der Bereich A1:G7 enthält Quelldaten (Zeile 1 ist die Kopfzeile).
Der Bereich A5:D7 ist eine Tabelle, die wir füllen möchten.
Setzen Sie in B6 die Formel ein:
=MakeCompact($B$1:$G$1;$B2:$F2;B$5)
Ziehen Sie es horizontal und vertikal, um die Zellen zu füllen.
Ich denke, diese Idee reicht aus, um Ihre Aufgabenlösung zu erstellen.
PS. Achtung – es gibt eine zusätzliche Spalte für die Fahrzeit.
PPS. Machen Sie die Funktion nach dem Debuggen flüchtig.