Vraag & Antwoord

Anders (software)

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

20 antwoorden
  • Hallo, In een dienstrooster moeten, even simpel gezegd, de vroege, late en nachtdiensten per dag geteld worden. Biedt Excel de mogelijkheid om op te tellen d.m.v. de achtergrondkleur van een cel of de tekstkleur van de waarde in de cel? Alvast bedankt voor het meedenken. Dirk
  • Mogen het ook tekstuele kleuren zijn? :wink:
  • D'r is er hier vast wel een die de rgb-code tevoorschijn kan toveren met vb...
  • [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.
  • Ja hoor, tekstkleur is ook geen probleem als het daarmee lukt. De celeigenschap is sowieso tekst.
  • -Dat was een geintje, Kreeble- rdk: Begrijp verder niets van VB maar in de VBHelp staat onder Color iets over gegeven óf ingesteld worden(voorbeelden gaan jammer genoeg alleen over ingesteld worden); daaronder bij (b.v.) Interior staat ook de [b:b64afa555f]cel[/b:b64afa555f] genoemd. ???
  • Klopt, je kunt idd ook de kleuren van een cel bepalen of bekijken: [code:1:f535d9a889] If Worksheets("Blad1").Range("A2").Interior.Color = RGB(255, 0, 0) Then [/code:1:f535d9a889] Maar het lijkt me toch ietwat omslachtig op deze wijze. Waarom niet gewerkt met drie kolommen?
  • 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(&quot;Blad1&quot;).Range(&quot;A1:A10&quot;) For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;A1:A10&quot;).Cells If c.Interior.Color = RGB(255, 255, 0) Then Worksheets(&quot;Blad1&quot;).Range(&quot;A11&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;A11&quot;).Value + c.Value End If Next c End With End Sub [/code:1:b8414a465b] <font size=-1>[ Dit Bericht is bewerkt door: rdk op 2002-01-27 18:59 ]</font>
  • 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 &quot;gele&quot; 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
  • 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(&quot;Blad1&quot;).Range(&quot;A1:A10&quot;) For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;A1:A10&quot;).Cells If c.Interior.Color = RGB(255, 255, 0) Then Worksheets(&quot;Blad1&quot;).Range(&quot;A11&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;A11&quot;).Value + 1 End If Next c For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;A1:A10&quot;).Cells If c.Interior.Color = RGB(255, 0, 0) Then Worksheets(&quot;Blad1&quot;).Range(&quot;A12&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;A12&quot;).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.
  • [quote:bbfafb5951] Op 27-01-2002 18:17, schreef rdk: Waarom niet gewerkt met drie kolommen? [/quote:bbfafb5951] Of één, met 'n lettertje(Vroeg, Laat of Nacht), met AANTAL.ALS(), en gewone Voorwaardelijke opmaak op 't lettertje. Dit is ook mooi, hoor :wink:
  • 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
  • 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
  • [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(&quot;Blad1&quot;).Range(&quot;A1:A10&quot;) Worksheets(&quot;Blad1&quot;).Range(&quot;A11&quot;).Value = 0 Worksheets(&quot;Blad1&quot;).Range(&quot;A12&quot;).Value = 0 For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;A1:A10&quot;).Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;A11&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;A11&quot;).Value + 1 End If Next c For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;A1:A10&quot;).Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;A12&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;A12&quot;).Value + 1 End If Next c End With End Sub [/code:1:2961ce5933] <font size=-1>[ Dit Bericht is bewerkt door: rdk op 2002-01-28 00:08 ]</font>
  • Zo gaat 't in 't echt ook hé: hindernissen terwijl U werkt :wink:
  • Hoi rdk, Bedankt! Je laatste code werkt perfect, met dank ook aan je verwijzing naar de &quot;kleurtjes&quot; 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
  • 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(&quot;Blad1&quot;).Range(&quot;E11&quot;).Value = 0 Worksheets(&quot;Blad1&quot;).Range(&quot;E12&quot;).Value = 0 For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;A1:BD10&quot;).Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;E11&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;E11&quot;).Value + 1 End If Next c For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;A1:BD10&quot;).Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;E12&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;E12&quot;).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.
  • 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 &quot;in één keer tellen&quot; 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
  • 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(&quot;Blad1&quot;).Range(&quot;C11&quot;).Value = 0 Worksheets(&quot;Blad1&quot;).Range(&quot;C12&quot;).Value = 0 For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;B1:C10&quot;).Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;C11&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;C11&quot;).Value + 1 End If Next c For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;B1:C10&quot;).Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;C12&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;C12&quot;).Value + 1 End If Next c 'dag 2 Worksheets(&quot;Blad1&quot;).Range(&quot;E11&quot;).Value = 0 Worksheets(&quot;Blad1&quot;).Range(&quot;E12&quot;).Value = 0 For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;D1:E10&quot;).Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;E11&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;E11&quot;).Value + 1 End If Next c For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;D1:E10&quot;).Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;E12&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;E12&quot;).Value + 1 End If Next c 'dag 3 Worksheets(&quot;Blad1&quot;).Range(&quot;G11&quot;).Value = 0 Worksheets(&quot;Blad1&quot;).Range(&quot;G12&quot;).Value = 0 For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;F1:G10&quot;).Cells If c.Interior.Color = RGB(255, 255, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;G11&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;G11&quot;).Value + 1 End If Next c For Each c In Worksheets(&quot;Blad1&quot;).Range(&quot;F1:G10&quot;).Cells If c.Interior.Color = RGB(255, 0, 0) And c.Value &gt; 0 Then Worksheets(&quot;Blad1&quot;).Range(&quot;G12&quot;).Value = Worksheets(&quot;Blad1&quot;).Range(&quot;G12&quot;).Value + 1 End If Next c End Sub [/code:1:5157bb3369]
  • Rdk, Dit is het. TOP! Geweldig bedankt voor de genomen moeite. Tot een volgende keer maar weer. Groeten, Dirk

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.