Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Fferi50

    Topikgazda

    válasz karlkani #42069 üzenetére

    Szia!
    Mivel feltételes formázás van, ezért a DisplayFormat tulajdonságot kell használni, ezt viszont függvényben sajnos nem tudja a VBA (a 2016-os legalábbis). Ezért nem függvényt, hanem Sub-ot kell használni:
    Public Sub CountColor(pRange1 As Range, pRange2 As Range)
    Dim rng As Range, xcolor As Long, CountColor As Integer
    xcolor = pRange2.DisplayFormat.Font.color
    For Each rng In pRange1
        If rng.DisplayFormat.Font.color = xcolor Then
            CountColor = CountColor + 1
        End If
    Next
    Range("A1").Value = CountColor 'ide azt a cella címet írd, ahová az eredményt szeretnéd
    End Sub
    Ezt viszont nem lehet felhasználói függvényként meghívni. A két paraméter ugyanaz, mint az általad leírt függvényben, pRange1 amiben keressük a cellákat, pRange2 aminek a színét számoljuk. Azért talán ezzel is tudsz ügyeskedni.
    Más ötlet. Talán mégsem a színek szerinti összesítés a nyerő. Feltételezem, hogy a feltételes formázásnak a feltételei valamilyen táblázat alapján működnek (jó kis mondat lett a feltételek halmozásával... :) ), mivel írtad, hogy pl. ünnepnapok. Ez alapján is lehetne a számolást elvégezni makró nélkül, valamilyen számláló képlettel, ami megvizsgálja, hogy az adott dátum benne van-e a "táblázatban". Szóval én nem vetném el ny.janos ötletét sem.

    Üdv.

  • ny.janos

    tag

    válasz karlkani #42069 üzenetére

    Makróhoz nem értek, így abban majd segítenek a nálam okosabbak, de ehhez nem is feltétlen alkalmaznék makrót.
    Beszúrhatsz egy új oszlopot, ahol a feltételes formázás képletét megadod, majd a szorzatösszeg függvénnyel megkapod a kívánt végeredményt. Szorzatösszeg helyett használhatsz szum függvényt is, de azt tömbképletként kell (Ctrl+Shift+Enter) alkalmaznod.
    Segédoszlop nélkül is megoldható. Pl. A1:A31 tartomány azon értékeinek összegzése, amelyek nagyobbak 30-nál:
    =SZORZATÖSSZEG(($A$1:$A$31)*($A$1:$A$31>30))
    vagy tömbképletként
    {=SZUM(($A$1:$A$31)*($A$1:$A$31>30))}

Új hozzászólás Aktív témák