Estoy creando un horario en Excel.
Tengo una lista de nombres a la izquierda, al lado están sus horarios cada 15 minutos a partir de las 11 a. m. (columna de las 11 a. m., 11:15 a. m., etc., etc.).
Se les asignará una tarea cada 15 minutos como E (correo electrónico), M (reunión), B (pausa).
Necesito mostrar en otra tabla sus horarios para cada tarea. Por ejemplo, tendré una columna Correo electrónico y, para cada nombre, la columna de correo electrónico mostrará sus horarios para la tarea de Correo electrónico según la primera tabla con su tarea programada cada minutos.
La columna de correo electrónico debe mostrar de 11 a. m. a 12 p. m. (ejemplo).
¿Algunas ideas?
Respuesta1
Código:
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
Uso:
Crea la tabla:
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
El rango A1:G7 son datos de origen (la fila 1 es el encabezado).
El rango A5:D7 es una tabla que queremos llenar.
Inserte en B6 la fórmula:
=MakeCompact($B$1:$G$1;$B2:$F2;B$5)
Arrástrelo horizontal y verticalmente para llenar las celdas.
Creo que esta idea es suficiente para crear la solución a tu tarea.
PD. Preste atención: hay una columna adicional sobre el tiempo programado.
PPP. Después de la depuración, haga que la función sea volátil.