Mi sembra ti avessi già postato il codice funzionante e anche un esempio di come attribuire agli "scaffali" lo stesso colore delle merci.
codice:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim colore As Integer
If Not Intersect(Target, Range("d10:d15")) Is Nothing Then
Select Case Target
Case "3x2"
colore = 3
Case "sconto 10%"
colore = 6
Case "promo"
colore = 4
Case "inventario"
colore = 5
Case Else
colore = 2
End Select
Target.Offset(0, -2).Interior.ColorIndex = colore
End If
Range("c4,d4").Interior.ColorIndex = Range("b10").Interior.ColorIndex
Range("d6,g4").Interior.ColorIndex = Range("b11").Interior.ColorIndex
Range("j4,k4").Interior.ColorIndex = Range("b12").Interior.ColorIndex
Range("k6,n4").Interior.ColorIndex = Range("b13").Interior.ColorIndex
Range("q4,r4").Interior.ColorIndex = Range("b14").Interior.ColorIndex
Range("r6,u4").Interior.ColorIndex = Range("b15").Interior.ColorIndex
End Sub
Qui trovi la palette dei colori
http://www.mvps.org/dmcritchie/excel/colors.htm
e qui il file come piace a te
http://myfreefilehosting.com/f/186204797d_0.05MB
Per quanto riguarda la domanda relativa alle caselle a discesa non ho office 2007 a portata di mano. Comunque nelle versioni antecedenti, una volta definito l'elenco dei valori possibili (h10:h13), si andava su dati > convalida > impostazioni > consenti: elenco e da lì si definiva l'intervallo per la singola cella.
Con un semplice copia > incolla speciale > convalida applichi il menù a tendina anche alle celle sottostanti.
Cercati la procedura nella tua versione.