Allora facciamo così:
1) nel foglio, creati una tabella di conversione su due colonne, contenenti
- prima colonna: la sigla del turno con lo stesso colore che userai nella tabella Orari
- seconda colonna, il valore a cui quella combinazione di Sigla + Colore deve essere associata
Se hai piu' colori per la stessa sigla, inserirai piu' righe
Il colore deve essere lo stesso applicato nell'area Orari, quindi sara' utile opportuno usare il "pennello" per copiare il formato dall'Orario alla tabella di conversione; anzi il mio suggerimento e' che fai il contrario: togli qualsiasi sfondo alla tabella degli Orari; assegni il colore alla tabella delle conversioni; nella compilazione degli Orari vai a copiare i valori dalla tabella conversione e li incolli (testo, colore e altri formati) nella tabella Orari.
Per prova io ho fatto cosi':
Le combinazioni Sigla /Colore non trovate non saranno manipolate nell'area Orari
2) Inserisci questa macro in un modulo standard del vba:
- Codice: Seleziona tutto
Sub Trascol()
Dim myTab As String, myC As Range, myEq As String
Dim WArr(), myVL
'
myTab = "B5:AF36" '<<< L'area della tabella Orari
myEq = "AK2:AL40" '<<< L'area della tabella di conversione
'
ActiveSheet.Copy After:=ActiveSheet
ReDim WArr(1 To Range(myEq).Rows.Count, 1 To 2)
For i = 1 To Range(myEq).Rows.Count
If Range(myEq).Cells(i, 1).Value <> "" Then
WArr(i, 1) = Range(myEq).Cells(i, 1) & " _" & Range(myEq).Cells(i, 1).Interior.ColorIndex
WArr(i, 2) = Range(myEq).Cells(i, 2)
End If
Next i
For Each myC In Range(myTab)
If myC <> "" Then
myVL = Application.VLookup(myC.Value & " _" & myC.Interior.ColorIndex, WArr, 2, False)
If Not IsError(myVL) Then
myC.Offset(1, 0) = myVL
myC.Offset(1, 0).Interior.ColorIndex = 36 '**1 Vedi Testo
Else
myC.Offset(1, 0).Interior.ColorIndex = xlNone '**2 Vedi testo
End If
End If
Next myC
'
MsgBox ("Completato...")
End Sub
Operativamente, partendo da Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato
-Personalizza le righe marcate <<< come da commenti.
A questo punto il file deve essere salvato nel formato .xlsm (macro enabled).
Poi torna su Excel e compila il contenuto dell'area Orari; quando sei pronto lancia la Sub Trascol:
-premi Alt-F8
-seleziona Trascol dall'elenco di macro disponibili
-premi Esegui
Nota**: al momento, per uso Debug, la macro colora in giallino gli orari che vengono inseriti (vedi riga marcata **1), mentre alle celle non toccate viene tolto l'eventuale colore (vedi riga marcata **2).
Per evitare sorprese quindi la macro crea all'inizio una copia del foglio di partenza e manipola contenuti di questo foglio, lasciando il foglio di partenza non alterato.
Si potra' rivedere tutto questo ultimo discorso quando il risultato sara' soddisfacente.
Prova e fai sapere...