Un lettore della Repubblica Ceca ha chiesto informazioni sulla creazione di un grafico in cella per illustrare una percentuale.
Se il valore in una cella era del 37%, come posso riempire il 37% della cella dal basso con un colore?

Mala Singh della nostra divisione grafica ha escogitato questa interessante soluzione per produrre l'effetto desiderato. Mala ha creato un foglio di lavoro in cui ogni riga è effettivamente composta da 2 righe unite. Le celle B2 e B3 vengono unite insieme in una singola cella. Quando il valore in B2 viene modificato, un po 'di codice VBA nel riquadro del foglio di lavoro regola automaticamente l'altezza della riga 2 e della riga 3. La cella C3 è di colore blu e la cella C2 è di colore bianco. L'effetto è che la colonna C sembra mostrare un grafico a colonne nella cella. Questa immagine mostra varie altezze della barra blu nelle celle da C2 a C13.

Il primo passaggio consiste nell'unire le celle B2 e B3 in una singola cella. Seleziona le celle B2 e B3. Dal menu, seleziona Formato, Celle. Vai alla scheda Allineamento. Seleziona la casella Unisci celle. Ciò farà sì che B2 e B3 agiscano come una singola cella chiamata B2.
Lascia la cella C2 senza riempimento e utilizza qualsiasi riempimento di colore per la cella C3.
Il codice per questa tecnica non è inserito in un modulo normale. È un codice "gestore eventi" e deve essere inserito nel modulo di codice per questo particolare foglio di lavoro. Leggi l'articolo Macro evento per aggiungere percorso e nome file all'intestazione di Excel per una visualizzazione su come aprire il modulo di codice per un foglio di lavoro.
Immettere il codice seguente nel modulo del codice per Sheet1 (o qualsiasi foglio con cui si sta lavorando).
Private Sub Worksheet_Change(ByVal Target As Range) Dim cell As Range For Each cell In Target.Cells If cell.Column = 2 And cell.Row> 1 Then If cell.Value> 1 Or cell.Value < 0 Then cell.Select MsgBox ("Value must be between 0 and 100%") End If If IsEmpty(cell) Or cell.Value = 0 Then cell.Range("B1:B2").RowHeight = 25 'cell.Range("B2").Interior.ColorIndex = xlNone Else On Error Resume Next cell.Range("B1").RowHeight = 50 * (1 - cell.Value) With cell.Range("B2") .RowHeight = 50 * cell.Value '.Interior.Color = RGB(0, 0, 255) On Error GoTo 0 End With End If End If Next End Sub
Puoi ripetere il processo di unione di coppie di celle nella colonna B.
Grazie a Mala Singh per questa soluzione. Mala può progettare soluzioni grafiche personalizzate per soddisfare qualsiasi esigenza. Ha contribuito al capitolo relativo alla creazione di grafici in VBA e Macro per Excel.