Ga naar inhoud

Excel - optellen d.m.v. kleur mogelijk?


anoniem

Aanbevolen berichten

[quote:cf7314d02f] Op 27-01-2002 16:16, schreef FlvanSon: D'r is er hier vast wel een die de rgb-code tevoorschijn kan toveren met vb... [/quote:cf7314d02f] Ja, de rgb-code is niet zo lastig. Onderstaande code laat de achtergrond rood worden: [code:1:cf7314d02f] Object.BackColor = RGB(255, 0, 0) [/code:1:cf7314d02f] Het probleem is dat dit volgens mij alleen met besturingselementen werkt, en niet met cellen.
Link naar reactie
Ik heb nog ff zitten stoeien, en op onderstaande wijze worden de waarden van alle gele cellen in A1 t/m A10 opgeteld in A11. [code:1:b8414a465b] Private Sub CommandButton1_Click() With ActiveWorkbook.Worksheets("Blad1").Range("A1:A10") For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 255, 0) Then Worksheets("Blad1").Range("A11").Value = Worksheets("Blad1").Range("A11").Value + c.Value End If Next c End With End Sub [/code:1:b8414a465b] [ Dit Bericht is bewerkt door: rdk op 2002-01-27 18:59 ]
Link naar reactie
rdk, Heb je stukje code even geprobeerd, en het doet bijna wat ik bedoel. Alleen geeft hij de som niet aan, maar toont de gevonden aantallen (7-15 7-15 7-15). Hier zou dus eigenlijk 3 moeten staan. In je code gebruik je voor de kleur geel Interior.Color = RGB(255, 255, 0). Als ik, een macro makend, de opvulkleur geel kies, gebruikt Excel de code Selection.Interior .ColorIndex = 6 .Pattern = xlSolid In dit "gele" geval wordt er dus wel geteld, maar wat voor RGB code gebruik ik bijvoorbeeld voor een pastelkleurtje? Of kan ik de ColorIndex-waarde gebruiken? Mvg, Dirk
Link naar reactie
Ik dacht dat je de som van een aantal waarden wilde hebben, maar het gaat dus om het aantal keren dat iets voorkomt. Onderstaand voorbeeld telt het aantal keren dat een cel rood of geel is: [code:1:d80e6c989d] Private Sub CommandButton1_Click() With ActiveWorkbook.Worksheets("Blad1").Range("A1:A10") For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 255, 0) Then Worksheets("Blad1").Range("A11").Value = Worksheets("Blad1").Range("A11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 0, 0) Then Worksheets("Blad1").Range("A12").Value = Worksheets("Blad1").Range("A12").Value + 1 End If Next c End With End Sub [/code:1:d80e6c989d] Een overzicht van RGB-codes kun je vinden op: [url]http://www.dsdelft.nl/html/index.html [/url] Succes.
Link naar reactie
Hoi rdk, Bedankt, dit is inderdaad een basis om op verder te gaan. Er worden nu alleen nog teveel cellen geteld, omdat er in de kolommen cellen samengevoegd zijn. En dat mag er niet af. Dan zou tekstkleur wellicht een optie zijn, maar kan dit? Of is de code zo aan te passen, dat er specifiek gekeken wordt naar bepaalde cellen? Verder werken we met een vierwekelijks rooster, dus zou er ook een stukje code moeten worden ingebakken om alle 28 dagen in één keer te tellen. Snap je 't allemaal nog? Is het anders wellicht handig als ik je een roostertje e-mail? Ik hoor het wel. Opnieuw dank, Dirk
Link naar reactie
FlvanSon (oude rot), Was het maar zo makkelijk. Als er alleen maar gewerkt werd met deze standaarddiensten, kon ik volstaan met V,L of N. Het zou hier alleen een te lang verhaal worden om alles uit te leggen. Maar binnen het rooster worden er ook nog andere (uren)tellingen verricht, en daar heb ik de cijfertjes weer voor nodig. Maar bedankt voor het meedenken natuurlijk! Groet, Dirk
Link naar reactie
[quote:2961ce5933] Op 27-01-2002 23:46, schreef Kreeble: Er worden nu alleen nog teveel cellen geteld, omdat er in de kolommen cellen samengevoegd zijn. En dat mag er niet af. [/quote:2961ce5933] Je zult vast een goede reden hebben om de cellen samen te voegen :wink:, maar dat kunnen we in de optelsom uitsluiten door alleen te zoeken naar niet-lege cellen: [code:1:2961ce5933] Private Sub CommandButton1_Click() With ActiveWorkbook.Worksheets("Blad1").Range("A1:A10") Worksheets("Blad1").Range("A11").Value = 0 Worksheets("Blad1").Range("A12").Value = 0 For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("A11").Value = Worksheets("Blad1").Range("A11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("A1:A10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("A12").Value = Worksheets("Blad1").Range("A12").Value + 1 End If Next c End With End Sub [/code:1:2961ce5933] [ Dit Bericht is bewerkt door: rdk op 2002-01-28 00:08 ]
Link naar reactie
Hoi rdk, Bedankt! Je laatste code werkt perfect, met dank ook aan je verwijzing naar de "kleurtjes" pagina. Wellicht kun je me ook helpen de hele 4-wekelijkse periode in één keer te tellen. Ik ben helemaal niet thuis in het VB taaltje, maar ik neem aan dat zoiets ook te programmeren is. Van jouw voorbeeld uitgaand wordt de eerste dag geteld uit de range A1:B10 (2 kolommen dus!).De uitkomst in A11, A12 etc. De tweede dag is de range C1:D10, en de uitkomst in C11, C12 etc. Met 28 dagen zouden de laatste 2 kolommen de range BC1:BD10 hebben. Zou je er eens over na willen denken? Met dank, Dirk
Link naar reactie
Dirk, in onderstaand voorbeeld worden de totalen in cellen E11 en E12 geplaatst. De totale range gaat al wel uit van datgene wat jij aangaf: [code:1:2f0245091a] 'totalen Worksheets("Blad1").Range("E11").Value = 0 Worksheets("Blad1").Range("E12").Value = 0 For Each c In Worksheets("Blad1").Range("A1:BD10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("E11").Value = Worksheets("Blad1").Range("E11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("A1:BD10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("E12").Value = Worksheets("Blad1").Range("E12").Value + 1 End If Next c [/code:1:2f0245091a] Dit moet ingepast worden in het vorige voorbeeld, voor de [b:2f0245091a]End Sub[/b:2f0245091a]. Succes, RdK.
Link naar reactie
Rdk, Het lijkt wel alsof je het vaker doet! Maar ik moet iets duidelijker zijn begrijp ik. Je code werkt hoor, prima zelfs, maar je verstaat onder "in één keer tellen" iets anders dan ik bedoel. Voor de duidelijkheid: Kolom A = namen medewerkers (40 man) Kolom B:C = dag 1 - kolom D:E = dag 2 - kolom F:G = dag 3 etc. De laatste dag in vierwekelijkse periode zijn de kolommen BD:BE Met behulp van je voorlaatste code worden bv. de vroege en late diensten alleen van dag 1 geteld. Voor de resterende 27 dagen wordt nog niets ingevuld, en dat had ik graag anders gezien. Ik hoef dus geen totalen te zien van alle diensten in de hele periode. Waar het me om gaat is dat ik na het invoeren van een periode onderaan kan zien of er voldaan wordt aan een minimale bezetting per dag voor elke dienst (V, L, N). Met een voorwaardelijke celopmaak kan ik dan de fouten die in de planning gemaakt direct zien. Ik hoop dat deze uitleg duidelijk maakt wat m'n bedoeling is. Groeten, Dirk
Link naar reactie
Dan moet dit het volgens mij zijn. Onderstaande rekent drie dagen uit. Met wat kopieer- en plakwerk (en aanpassen van de cellen) kun je dit zelf wel tot 28 dagen uitbreiden: [code:1:5157bb3369] Private Sub CommandButton1_Click() 'dag 1 Worksheets("Blad1").Range("C11").Value = 0 Worksheets("Blad1").Range("C12").Value = 0 For Each c In Worksheets("Blad1").Range("B1:C10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("C11").Value = Worksheets("Blad1").Range("C11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("B1:C10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("C12").Value = Worksheets("Blad1").Range("C12").Value + 1 End If Next c 'dag 2 Worksheets("Blad1").Range("E11").Value = 0 Worksheets("Blad1").Range("E12").Value = 0 For Each c In Worksheets("Blad1").Range("D1:E10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("E11").Value = Worksheets("Blad1").Range("E11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("D1:E10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("E12").Value = Worksheets("Blad1").Range("E12").Value + 1 End If Next c 'dag 3 Worksheets("Blad1").Range("G11").Value = 0 Worksheets("Blad1").Range("G12").Value = 0 For Each c In Worksheets("Blad1").Range("F1:G10").Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value > 0 Then Worksheets("Blad1").Range("G11").Value = Worksheets("Blad1").Range("G11").Value + 1 End If Next c For Each c In Worksheets("Blad1").Range("F1:G10").Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value > 0 Then Worksheets("Blad1").Range("G12").Value = Worksheets("Blad1").Range("G12").Value + 1 End If Next c End Sub [/code:1:5157bb3369]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...