Restructurer les données dans Excel

2

Je crée un calendrier dans Excel.

J'ai une liste de noms sur la gauche, à côté de laquelle se trouve leur horaire toutes les 15 minutes à partir de 11h (colonne de 11h, 11h15, etc.).

Ils recevront une tâche toutes les 15 minutes comme E (email), M (réunion), B (pause).

Je dois montrer dans un autre tableau leurs calendriers pour chaque tâche. Comme par exemple, je vais avoir une colonne Email, et pour chaque nom, la colonne email affichera leur emploi du temps pour la tâche Email en fonction du premier tableau avec leur tâche planifiée toutes les minutes.

La colonne email devrait indiquer 11h-12h (exemple).

entrez la description de l'image ici

Des idées?

Astrid 22
la source
Pourriez-vous s'il vous plaît télécharger des exemples de données, Source et attendus?
Rajesh S
Je vous recommande de créer UDF effectué cette tâche.
Akina

Réponses:

1

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

Usage:

Créez la table:

     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   

La plage A1: G7 correspond aux données source (la ligne 1 correspond à l'en-tête).

La plage A5: D7 est un tableau que nous voulons remplir.

Insérer dans B6 la formule:

=MakeCompact($B$1:$G$1;$B2:$F2;B$5)

Faites-le glisser horizontalement et verticalement pour remplir les cellules.

Je pense que cette idée est suffisante pour créer votre solution de tâche.

PS Faites attention - il y a une colonne supplémentaire sur le temps de travail.

PPS. Après le débogage, rendez la fonction volatile.

Akina
la source
Bonjour, merci pour votre réponse. Est-ce VBA?
Astrid 22
Oui. C'est VBA (macro en termes Excel).
Akina
Oh d'accord, je vais l'essayer
Astrid 22