Excel: balk (grafiek) in cel die waarde aangeeft

Pagina: 1
Acties:
  • 488 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • tbenschop2
  • Registratie: Maart 2005
  • Laatst online: 10-02-2021
In Excel zou ik graag naast een kolom met waarden, een kolom willen maken met in elke cel een horizontale balk, waarvan de lengte aangeeft wat de waarde is van de cel ernaast.

Dus:

| 3 | ---
| 5 | -----
| 9 | ---------
| 3 | ---
| 2 | --


Hoe doe ik dat? En kan ik dan ook de dikte en relatieve lengte van die balk bepalen (ook layout, kleur enzo)?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • SinergyX
  • Registratie: November 2001
  • Laatst online: 00:28

SinergyX

____(>^^(>0o)>____

Gewoon een no-layout grafiek toevoegen? :)

Anders mischien met - teken werken (aantal x typen) of een berg smalle kolommen naast elkaar en die obv cijfers een kleurtje laten geven.

Nog 1 keertje.. het is SinergyX, niet SynergyX
Im as excited to be here as a 42 gnome warlock who rolled on a green pair of cloth boots but was given a epic staff of uber awsome noob pwning by accident.


Acties:
  • 0 Henk 'm!

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 02-05 23:48
Niet.

Maar er zijn wel een tweetal workarounds:
-Probeer het eens met grafieken, die netjes over de cel liggen
-Als je -zeg 100- kolommen heel erg smal maakt, kan je met conditionele formatering, of VBA wel cellen gaan verven. Maar alleen de hele cel wel, of niet, een kleurtje.

edit:
Synergx: grom :P

[ Voor 6% gewijzigd door onkl op 21-07-2006 11:47 ]


Acties:
  • 0 Henk 'm!

  • tbenschop2
  • Registratie: Maart 2005
  • Laatst online: 10-02-2021
Bedankt voor de reactie zover.
Ik vind de oplossingen nog niet echt bevredigend: Meerdere kolommen naast elkaar kan wel, maar het is veel werk om alles te kleuren. Ook worden het dan geen balken maar wordt de hele cel gekleurd. Aangezien de cellen verschillende hoogten hebben wordt het er dan niet mooier op.
Het zelf typen van ---- kan, maar is niet bepaald een mooie/professioneel ogende oplossing..

Toch bedankt tot nu toe.. Nog meer ideeen>?

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 03-05 14:57

Dido

heforshe

Je kunt een staafgrafiek definieren met 1 cel als source.

Pas je x-as bereik aan, haal je x en y as labels weg, zet de gap-grootte op 0 tussen je staven (is er maar een) en maak je plot area zo groot mogelijk tov je graph area, maak je graph area zo hoog als 1 cel.

Vervolgens copy/paste je die grafiek (pas als ie er goed uitziet, haal desgwenst nog het kader eromheen weg, verander de plot-area background color naar wit, etc, etc,) zovaak als nodig.
Pas dan per grafiek de datasource aan naar de juiste cel, size alles, plaats het waar je wilt en klaar is KLara :)

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • tbenschop2
  • Registratie: Maart 2005
  • Laatst online: 10-02-2021
Zo, dat lijkt me een tijdrovend klusje!
Bedankt voor het idee.
Ik heb het anders opgelost: toch maar handmatig de ---- zetten, maar dan ipv de -- een mooi zwart blokje uit het Wingdings font.

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 03-05 14:57

Dido

heforshe

tbenschop2 schreef op vrijdag 21 juli 2006 @ 13:23:
Zo, dat lijkt me een tijdrovend klusje!
Mwah, ik was in 5 minuten klaar met het creeren en formatten van de eerste grafiek.

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 02-05 23:48
ANders plak je dit in je VBA code.
Ga naar een leeg blad en run maken.
verander waardes en run verversen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Type combi
broncel As Range
plakcel As Range
bar As Shape
barnaam As String
End Type

Sub maken()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Columns(3).ColumnWidth = ws.Cells(1, 1).Width * 3
Dim naam As String
Dim rijtje(2 To 11) As combi
For i = LBound(rijtje, 1) To UBound(rijtje, 1)
    Set rijtje(i).broncel = ws.Cells(i, 1)
    Set rijtje(i).plakcel = ws.Cells(i, 3)
    rijtje(i).broncel.Value = Round(Rnd() * 100, 0)
    ActiveSheet.OLEObjects.Add( _
        ClassType:="MSComctlLib.ProgCtrl.2", _
        Link:=False, _
        DisplayAsIcon:=False, _
        Width:=rijtje(i).plakcel.Width, _
        Height:=rijtje(i).plakcel.Height - 2, _
        Top:=rijtje(i).plakcel.Top + 1, _
        Left:=rijtje(i).plakcel.Left _
        ).Select
    Set rijtje(i).bar = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
    'geef de shape een terugvindbare naam
    naam = rijtje(i).bar.Name
    rijtje(i).barnaam = "PB" & i
    rijtje(i).bar.Name = rijtje(i).barnaam
    ActiveSheet.OLEObjects(rijtje(i).barnaam).Object.Value = rijtje(i).broncel.Value
    'haal de standaard blokjes uit een progressbar
    ActiveSheet.OLEObjects(rijtje(i).barnaam).Object.Scrolling = 1
    rijtje(i).plakcel.Offset(0, -1).Value = rijtje(i).barnaam
Next i
ws.Cells(1, 1).Value = "Waarde:"
ws.Cells(1, 3).Value = "Progressbar"
End Sub

Sub verversen()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim rijtje(2 To 11) As combi
For i = LBound(rijtje, 1) To UBound(rijtje, 1)
    Set rijtje(i).broncel = ws.Cells(i, 1)
    Set rijtje(i).plakcel = ws.Cells(i, 3)
    rijtje(i).barnaam = "PB" & i
    Set rijtje(i).bar = ActiveSheet.Shapes(rijtje(i).barnaam)
    ActiveSheet.OLEObjects(rijtje(i).barnaam).Object.Value = rijtje(i).broncel.Value
Next i
Application.ScreenUpdating = True
End Sub

* onkl gaat pas weer wat nuttigs doen met zijn leven als deze hitte voorbij is.
Pagina: 1