Az utóbbi időszakban nagyon elhanyagoltam a blogot, nem posztoltam semmit, nem fejlesztettem az oldalt, és fel is gyűlt jó sok e-mail, ami miatt elnézést kérek, hogy megválaszolatlanul maradtak. Kompenzálni szeretném ezt azzal, hogy most az egyik emailben megfogalmazott problémára megoldást nyújtok.
Továbbá mentésgemre szolgáljon, hogy egy olyan projekt viszi el a szabadidőmet és a fókuszomat, ami a jövő generációját szolgálja. Írtam egy gyönyörűen illusztrált mesekönyvet, azzal a céllal, hogy modern és hagyományos, örökérvényű tanulságokat adjak át a gyerekeknek. Egy dinós mesekönyv, „Tanulságos Dinókalandok” címen, csodálatos képekkel, fontos értékekkel és tanulságos mesékkel, valamint dinszauruszokkal teletűzdelve.
Ennyit a kreatív linképítésről és a dinós mesekönyvekről, vissza a makrós problémához. 🙂
Hány darab sárga háttérszínű cella van?
Egyik olvasó az alábbi e-maillel fordult hozzám:
Hogyan tudom megszámolni egy referencia cellában, pl A1 cellában lévő bizonyos háttér szín alapján egy tartományban pl. B1:B10 lévő azonos színű cellák darabszámát?
A feladatunk tehát, hogy az A1 cella referencia háttérszínével kifestett cellákat számoljuk össze B1:B10 tartományban és írjuk ki a számot A3 cellába. A példában én sárga színt használok, de a megoldásban ezt dinamikusan kezeljük, mert először kiolvassuk a makrónkban a referencia színt az A1 cellából. Második lépésben végigfutunk a B1:b10 tartomány celláink, és ha szerepel benne sárga háttérszínű cella, akkor azt megszámoljuk egy változóban. Végül ennek a változó értékét írjuk ki A3 cellába.
Íme a VBA kódunk:
Sub Gomb1_Click() '1. Meghatározzuk A1 cella színét Dim Color As String Color = Range("A1").Interior.ColorIndex '2. Végigmegyünk B1:B10 tartomány minden celláján és megnézzük melyek tartalmazzák a referencia színünket Dim SumColor As Integer SumColor = 0 For i = 1 To 10 If Cells(i, 2).Interior.ColorIndex = Color Then SumColor = SumColor + 1 End If Next '3. Kiírjuk az összesített számot Range("A3") = SumColor End Sub
Ennyire egyszerű kódról van szó.