Conteggio valori



  • Conteggio valori
    di marco (utente non iscritto) data: 19/09/2015 12:47:30

    Ciao a tutti.
    Ho provato a fare una ricerca nel forum ma ho capito poco.
    in pratica ho una colonna a con una serie di valori (nomi o numeri) e vorrei averne un conteggio.
    elenco varia di giorno in giorno.
    colonna A = rosso, giallo, giallo, verde, giallo.
    vorrei ottenere
    rosso=1
    giallo = 3
    Verde =1



  • di alfrimpa data: 19/09/2015 13:02:07

    Ciao Marco

    Hai provato con CONTA.SE?

    Es.: CONTA.SE(A1:A10;"giallo")

    Alfredo





  • di marco (utente non iscritto) data: 19/09/2015 14:53:07

    non conosco a priori i valori
    cambiano tutte le volte



  • di alfrimpa data: 19/09/2015 15:02:20

    Si ma come secondo parametro del CONTA.SE puoi mettere anche un indirizzo di cella dove puoi andare a scrivere quello che vuoi (guardati l'help della funzione sulla guida in linea di Excel).

    Quindi se in a1, a2 e a3 hai rosso giallo e verde potrai scrivere

    CONTA.SE(A1:A10;A1)

    CONTA.SE(A1:A10;A2)

    CONTA.SE(A1:A10;A3)

    avrai il conteggio dei rossi, verdi e gialli.

    O non ho capito il tuo problema.

    Alfredo





  • di marco (utente non iscritto) data: 19/09/2015 15:50:30

    Si ho capito
    ma vorrei che con un passaggio avessi una specie di legenda dove ho il riassunto del conteggio d tutti i valori.
    non posso perdere tempo a vedere quali valori ci sono mentre lo faccio me li conto anche
    (o ho capito male?)



  • di alfrimpa data: 19/09/2015 15:54:29

    Scusa ma non riesco a capire.

    Quale dovrebbe essere questo "passaggio"?

    Qualcosa sul foglio dovrai pur farla.

    Alfredo





  • di marco (utente non iscritto) data: 19/09/2015 16:58:27

    se ho 400 righe devo impostare
    CONTA.SE(A1:A10;A1)

    per 400 volte? cioè vario il finale da A1 a A2 a A3 ecc



  • di alfrimpa data: 19/09/2015 17:41:07

    Scusami nella precedente formula c'era un'imprecisione

    Dovresti fare così (sempre che abbia capito bene) supponendo che

    In A1:A400 vi sia la zona dati
    In B1:Bn i valori da conteggiare

    In C1 metti CONTA.SE($A$1:$A$400;B1) e ricopi in basso fino all'ultima riga della colonna B cioè dei valori da conteggiare.

    Successivamente ad ogni modifica della colonna A avrai in colonna C il conteggio immediato dei valori posti in colonna B.

    Spero di essere stato chiaro.

    Alfredo






  • di marco (utente non iscritto) data: 19/09/2015 19:05:31

    scusa alfrimpa ma penso di non riuscire a spiegarmi o a capire.
    ecco io ho in colonna A molti valori (anche 400) che spesso si ripetono.
    Ogni giorno i valori cambiano e io faccio il conteggio a mano; me li scorro tutti e conto quante volte i valori sono presenti.
    scrivo i rusultati nella colonna laterale quindi:
    colonna A= serie valori (parole)
    colonna B= legenda che faccio a mano: casa=2
    fiori=3
    giallo =1
    non so quali siano i valori da conteggiare



  • di alfrimpa data: 19/09/2015 19:14:51

    In colonna B devi mettere i valori che vuoi siano conteggiati (casa, fiori, giallo etc.) ed in colonna C le formule che ti ho detto.

    Ora sono fuori (rientro domani sera) altrimenti ti avrei allegato un file di esempio.

    Lunedì mattina lo faccio sicuramente (almeno per quel che ho capito).

    Alfredo





  • di ninai data: 19/09/2015 20:24:23

    ciao a tutti

    secondo me, una pivot è la "morte sua".

    altrimenti
    si dovrebbe fare una colonna , es. la B, con tutti i membri univoci presenti in A

    e fare il conta.se() in C , usando come criterio i valori di B.

    Per i termini univoci , si possono usare sia formule che la procedura dati-rimuovi duplicati.



  • di Marco (utente non iscritto) data: 19/09/2015 21:42:22

    tieni presente che non so quali valori ci siano.

    in rete vedo le collection? servono



  • di cromagno data: 19/09/2015 22:20:12

    Ciao a tutti,
    @Marco
    Le "Collection" servono per il VBA... non è necessario scomodarle

    Quello che non ho capito è se hai risolto o meno...
    Prima la discussione risultava RISOLTA, adesso non più...



  • di alfrimpa data: 19/09/2015 22:45:12

    Non capisco cosa intendi quando dici: "tieni presente che non so quali valori ci siano."

    In teoria si potrebbe scrivere una macro che estragga dalla colonna A in valori univoci e li ponga in colonna B; poi le formule in colonna C effettuano il conteggio.

    Ma non credo sia il caso.

    Quindi in base a quale criterio le formule in colonna C dovrebbero effettuare il conteggio?

    Alfredo





  • di ninai data: 20/09/2015 11:29:41

    ciao
    per come ho capito e precedentemente proposto, ecco le tre opzioni riporate nel file di esempio:

    dati in A3:A49

    soluzione1: pivot

    soluzione2:
    copia dati in H3
    rimuovi duplicati
    in I3:
    =CONTA.SE($A$3:$A$49;H3)

    soluzione 3:
    in K3:
    =INDICE($A$3:$A$49;CONFRONTA(0;INDICE(CONTA.SE($K$2:K2;$A$3:$A$49&""););0))
    ricopia in basso
    In L3:
    =CONTA.SE($A$3:$A$49;K3)
    ricopia in basso



  • di alfrimpa data: 20/09/2015 12:22:16

    Santo non resta che la soluzione in VBA

    Alfredo





  • di ninai data: 20/09/2015 12:27:03

    cit.
    Santo non resta che la soluzione in VBA

    mannaggia, ho un virus, non removibile, che appena inizio un codice vba mi blocca la tastera.


    "al momento", dovrete provvedere voi
     



  • di ninai data: 20/09/2015 12:30:31

    Anzi NO!!

    giusto per ridere:


     
    Sub Macro1()
    '
    ' Macro1 Macro
    '
    
    '
        Range("A3:A49").Select
        Selection.Copy
        ActiveWindow.SmallScroll Down:=-42
        Range("O3").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Application.CutCopyMode = False
        ActiveSheet.Range("$O$3:$O$49").RemoveDuplicates Columns:=1, Header:=xlNo
        Range("P3").Select
    End Sub



  • di Marco (utente non iscritto) data: 20/09/2015 12:38:10

    La soluzione che volevo ottenere è proprio quella dalla pivot.
    non conosco i dati valori che avrò in A quindi con la pivot ho subito legenda complessiva con il dato e quante volte appare.
    ora visto che i dati cambiano ogni giorno devo rempostare la pivot ogni giorno?
    (una macro che clicco e mi restituisce lo stesso risultato non era più semplice)

    ho visto la macro ma non conteggia i valori



  • di ninai data: 20/09/2015 12:58:28

    cit.
    "ora visto che i dati cambiano ogni giorno devo rempostare la pivot ogni giorno?
    (una macro che clicco e mi restituisce lo stesso risultato non era più semplice)
    ho visto la macro ma non conteggia i valori"

    Marco, "santo ragazzo", ma un piccolo sforzo fallo!!

    -la pivot, va solo aggiornata
    -la macro va scritta meglio (ho solo registrato la procedura di elimina duplicati), per il conteggio basta adattare la formula già riportata più volte.

    nel file ti ho messo anche una soluzione con formula, che in automatico ti da sia la lista che il conteggio.


  • ho fatto un piccolo sforzo
    di Marco (utente non iscritto) data: 20/09/2015 18:16:03

    Era da tempo che non frequentavo questo forum. Quanto aiuti ho avuto da Vecchio Frack e da Harry....
    ho rispolverato qualche codice (ed in una decina di minuti ho risolto)
    - range automatico nella colonna A
    - creo una collezione di dati
    - conteggio dei valori ripetuti
    - riporto tutto accanto

     
    Sub prova()
        Dim rng As Range, tipo As Range, cella As Range
        Dim col As Collection
        Dim valore As Variant
        Dim lista As String
        Dim ur As Integer, r As Integer
        Dim tip As Integer, tot As Integer, peso As Integer
    
        Application.ScreenUpdating = False
    
    
        With Sheets("foglio1")
            ur = .Cells(Rows.Count, 1).End(xlUp).Row
            Set rng = Range(.Cells(1, 1), .Cells(ur, 1))
    
    
            Set col = New Collection
            On Error Resume Next
            For Each tipo In rng
                tipo = Trim(tipo)
                col.Add tipo.Value, CStr(tipo.Value)
            Next
    
            For Each valore In col
            If valore <> "" Then
                    
                For Each cella In rng
                    If cella.Value = valore Then
                        tip = tip + 1
                        
                    End If
                Next
                Sheets("foglio1").Cells(r + 3, 4) = valore
                Sheets("foglio1").Cells(r + 3, 5) = tip
                
                r = r + 1
                tip = 0
                End If
            Next
    
        End With
        End Sub