Un cititor din Republica Cehă a întrebat despre crearea unui grafic în celulă pentru a ilustra un procent.
Dacă valoarea într-o celulă era de 37%, cum pot umple 37% din celulă de jos cu o culoare?

Mala Singh din divizia noastră de grafică a venit cu această soluție interesantă pentru a produce efectul dorit. Mala a construit o foaie de lucru în care fiecare rând este de fapt format din 2 rânduri îmbinate. Celulele B2 și B3 sunt îmbinate într-o singură celulă. Când valoarea din B2 este modificată, un pic de cod VBA în panoul foii de lucru va regla automat înălțimea rândului 2 și rândului 3. Celula C3 este colorată în albastru și celula C2 este colorată în alb. Efectul este că coloana C pare să afișeze o diagramă de coloane în celulă. Această imagine prezintă diferite înălțimi ale barei albastre din celulele C2 până la C13.

Primul pas este îmbinarea celulelor B2 și B3 într-o singură celulă. Veți selecta celulele B2 și B3. Din meniu, selectați Format, celule. Accesați fila Alignment. Bifați caseta pentru Merge cells. Acest lucru va face ca B2 și B3 să acționeze ca o singură celulă numită B2.
Lăsați celula C2 fără umplere și utilizați orice culoare pentru celula C3.
Codul pentru această tehnică nu este plasat într-un modul obișnuit. Este un cod „gestionar de evenimente” și trebuie plasat pe modulul de cod pentru această foaie de lucru specială. Citiți evenimentul Macro pentru a adăuga calea și numele fișierului la articolul din antetul Excel pentru o imagine despre cum să deschideți modulul de cod pentru o foaie de lucru.
Introduceți următorul cod pe modulul de cod pentru Foaia1 (sau orice foaie cu care lucrați).
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
Puteți repeta procesul de fuzionare a perechilor de celule din coloana B.
Mulțumim Mala Singh pentru această soluție. Mala poate proiecta soluții de cartografiere personalizate pentru a satisface orice nevoie. A contribuit la capitolul graficare în VBA și Macros pentru Excel.