È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Contare celle a cui è applicata la formattazione condizionale

  • Messaggi
  • mikymato
    00 30/05/2018 18:59
    Chiedo aiuto agli esperti.
    Ho un file con centinaia di righe con numeri su sei colonne.
    Queste celle, a cui ho applicato la formattazione condizionale si colorano se rispondono a certi requisiti.
    Come posso contare, riga per riga le celle colorate?
    Ho provato diverse soluzioni trovate in rete ma senza soluzione.
    Grazie
  • OFFLINE
    federico460
    Post: 1.621
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 30/05/2018 19:12
    ciao
    senza file o almeno
    la formula di formattazione è difficile
    darti una risposta.


    [Modificato da federico460 30/05/2018 19:12]
  • mikymato
    00 30/05/2018 19:29
    File
    Allego un file semplice di esempio.
    Nelle colonna I vorrei che ci fosse il totale delle celle colorate, riga per riga.
    Grazie
  • OFFLINE
    raffaele1953
    Post: 3.509
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 31/05/2018 01:14
    Seguendo il Tuo allegato, la cosa migliore e rifare "quanto fatto in FC"
    Ex nella riga2 =CONTA.SE(B2:G2;140),,, se poi ci sino altre condizioni aggiungerle di seguito
    EX nella riga2 =CONTA.SE(B2:G2;140)+CONTA.SE(B2:G2;130)+CONTA.SE(B2:G2;110) ecc ecc e trascinare giù

    Dato che usi Excel2007 presumo che il codice sotto non funzioni, comunque se Vuoi provarlo sul tuo allegato
    Casomai sull'originale dovrai modificare i riferimenti della riga16
    vb
    Function ContaColorFC(ByRef rng As Range)
      Dim cella As Range
      Dim sFC As String
      ContaColorFC = 0
      For Each cella In rng
          If cella.DisplayFormat.Interior.ColorIndex <> xlColorIndexNone Then
            ContaColorFC = ContaColorFC + 1
          End If
      Next cella
    End Function
    Sub conta() ' questo il codice da avviare
    Dim X As Long, Ur As Long
    Ur = Range("A" & Rows.Count).End(xlUp).Row 'conta le righe
    For X = 2 To Ur 'dalla riga2 sino alla fine
    'NB Controlla le colonne da 1=A sino 7=G e scrive in colonna 8=H
        Cells(X, 8) = ContaColorFC(Range(Cells(X, 1), Cells(X, 7)))'riga16
    Next X
    End Sub
    [Modificato da raffaele1953 31/05/2018 01:19]
    Excel 2013
  • OFFLINE
    cromagno
    Post: 630
    Registrato il: 02/08/2015
    Utente Senior
    Excel 2013
    00 31/05/2018 10:12
    Ciao a tutti,

    @miky
    essendo le celle colorate tramite formattazione condizionale, ti basta usare una formula con lo stesso criterio di quest'ultima....

    In cella I2 (da copiare poi in basso):
    =CONTA.SE($B2:$G2;$L$3)

    Ciao
    Tore


    "Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
  • mikymato
    00 31/05/2018 20:54
    Re:
    Grazie, ho provato il codice da te proposto ma non funziona.
    Per la versione di Excel non avevo aggiornato il profilo, al momento utilizzo la versione 2016.
    Probabilmente la soluzione migliore è il CONTA.SE.

    Ciao


  • OFFLINE
    raffaele1953
    Post: 3.512
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 31/05/2018 21:22
    2016 = deve funzionare
    Edit hai messo il codice in un MODULO?
    [Modificato da raffaele1953 01/06/2018 13:15]
    Excel 2013
  • OFFLINE
    dodo47
    Post: 1.868
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 01/06/2018 13:17
    ciao
    la formula di Tore (saluti) "deve funzionare", a meno che il tuo schema non abbia struttura diversa da quella sottoposta.



    [Modificato da dodo47 01/06/2018 13:18]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    federico460
    Post: 1.622
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 01/06/2018 18:12
    ciao
    visto il file
    conta.se o matr.somma.prodotto


    =MATR.SOMMA.PRODOTTO(--($B2:$G2=$L$3))




    =CONTA.SE($B2:$G2;$L$3)




    raffaele
    la sub funziona
    ma la funzione pur dando il risultato
    mi da valore

    ho scritto


    =ContaColorFC(B2:G2)




    c'è qualcosa di sbagliato?
    [Modificato da federico460 01/06/2018 18:19]
  • OFFLINE
    raffaele1953
    Post: 3.514
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 02/06/2018 00:13
    @federico460
    Io non sono capace di spiegare, leggi questo vecchio post
    http://www.excelvba.it/Forum/story/Excel_e_gli_applicativi_Office/Contare_celle_con_formattazione_condizionale.html
    Excel 2013
  • OFFLINE
    federico460
    Post: 1.623
    Registrato il: 10/10/2013
    Città: VICENZA
    Età: 69
    Utente Veteran
    365
    00 02/06/2018 01:19
    ciao
    capito

    grazie
  • OFFLINE
    Marius44
    Post: 580
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 02/06/2018 18:37
    Salve a tutti
    Visto che mi avete tirato in ballo (c'ero nella discussione citata), vorrei proporre una mia soluzione con VBA

    Ecco il codice:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    'by Marius44
    Dim FC As FormatCondition, F1, c As Range, a As Long
    If Not Intersect(Target, Range("L3")) Is Nothing Then
      For Each c In Range("B2:G9")
        c.Activate
        For Each FC In ActiveCell.FormatConditions
          If FC.Type = xlCellValue Then
            F1 = Evaluate(FC.Formula1)
            If ActiveCell = F1 Then a = a + 1
          End If
        Next FC
      Next c
      MsgBox "Celle formattate = " & a
    End If
    End Sub
    

    Allego il file in cui basta cambiare il dato in L3

    Ciao,
    Mario
  • OFFLINE
    raffaele1953
    Post: 3.515
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Master
    2013
    00 03/06/2018 12:32
    Un saluto a Marius44
    Hai ragione, avrei dovuto citarne la fonte e per pigrizia ho usato la stessa Function
    Scossa.vr (ciao) ha specificato bene la problematica + EXCEL 2010.
    Qualsiasi Sub può farlo (tranne la stessa Function), comunque il conteggio era per ogni riga...
    vb
    Sub conta()
    Dim X As Long, Ur As Long, cella As Range, Rng As Range, ContaColorFC As Long
    Ur = Range("A" & Rows.Count).End(xlUp).Row
    For X = 2 To Ur
        ContaColorFC = 0
        Set Rng = Range(Cells(X, 1), Cells(X, 7))
        For Each cella In Rng
            If cella.DisplayFormat.Interior.ColorIndex <> xlColorIndexNone Then
                ContaColorFC = ContaColorFC + 1
            End If
        Next cella
        Cells(X, 8) = ContaColorFC
    Next X
    Set Rng = Nothing
    End Sub
    
    [Modificato da raffaele1953 03/06/2018 12:36]
    Excel 2013
  • OFFLINE
    Marius44
    Post: 581
    Registrato il: 24/06/2015
    Città: CATANIA
    Età: 80
    Utente Senior
    Excel2019
    00 03/06/2018 15:09
    Ciao Raffaele

    Hai ragione. Ho letto male.
    Comunque, facile aggiustarla (volendo, ma io non voglio [SM=x423029] )
    Ciao,
    Mario