Contare testo maiuscolo e minuscolo



  • Contare testo maiuscolo e minuscolo
    di Klayman (utente non iscritto) data: 05/04/2015 20:35:03

    Devo contare esattamente quante stringhe di testo esatte ci sono in un intervallo di celle.

    Ad esempio ho una colonna con:

    Ddim
    DG
    dG
    GdG
    g
    DG
    DdimdG
    Gim

    Vorrei contare ad esempio "dG": il risultato dev'essere: 1, quindi case sensitive e che non conti pezzi di stringhe.

    Aiuto!!!!



  • di isy data: 05/04/2015 20:56:16

    Un argomento complesso, ho allegato un esempio dalla rete mediante formule
    File: string-exist-in-multiple-cellsv2.xlsx


  • Mah..
    di Klayman (utente non iscritto) data: 05/04/2015 21:30:56

    Mamma mia non ci capisco nulla.

    A me serviva il semplice calcolo di un valore esatto, proprio quello, case sensitive. Possibile non ci sia una via semplice?



  • di isy data: 05/04/2015 21:37:18

    Hi, Klayman prova ad inserire i tuoi dati nella tabella.
    Allega se hai difficoltà un file di prova con la struttura che utilizzi


  • Aiuto
    di Klayman (utente non iscritto) data: 05/04/2015 21:52:07

    Ho allegato un file Esempio in cui devo contare le celle in un elenco. Grazie a chi mi aiuterà.



  • di scossa data: 06/04/2015 00:04:04



    =MATR.SOMMA.PRODOTTO(--(IDENTICO(A2;B3:B26)))


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)




  • di Lucas87 data: 06/04/2015 10:00:51

    Ciao
    Se ti dovesse interessare un macro da collegare ad un pulsante sul foglio
     
    Range("d2").ClearContents   'cancella il conteggio
    Range("e2:e" & Rows.Count).ClearContents    'cancella i risultati
    'cerca nella colonna A quello che c'è scritto in D1 considerando maiuscole e minuscole
    Set fin = Columns(1).Find(What:=Range("d1"), LookAt:=xlPart, MatchCase:=True)
    If Not fin Is Nothing Then
        firstaddress = fin.Address
        'ripete l'operazione cercando il risultato successivo
        Do
            cont = cont + 1 'conta
            Cells(cont + 1, 5) = fin    'riporta i risultati
            Set fin = Columns(1).FindNext(fin)  'cerca il risultato successivo
        Loop While Not fin Is Nothing And firstaddress <> fin.Address   'quando torna al primo risultato si ferma
    End If
    Range("d2") = cont  'scrive il conteggio
    



  • di Vecchio Frac data: 06/04/2015 11:53:35

    Un piccolo contributo alternativo.
    Potrebbe funzionare anche come UDF.
     
    Option Explicit
    
    Function count_of(r As Range, fnd As String) As Integer
    'conta le occorrenze di "fnd" nel range "r"
    'la function può essere usata anche nel fogli di lavoro come UDF
    'come formula: =count_of(A1:A10;C2)
    'come funzione: somma = count_of(Range("A1:A10"), "dG")
    Dim re As Object, match As Variant
    Dim text As String
        
        Set re = CreateObject("VBScript.RegExp")
        re.Pattern = "#" & fnd
        re.IgnoreCase = False
        re.Global = True
        
        text = Join(Application.Transpose(r), "#")
        
        If re.Test(text) Then count_of = re.Execute(text).Count
    
    End Function






  • di scossa data: 06/04/2015 12:54:48

    @V.F.: se provi la tua UDF con fnd="Da" ti restituisce 3, anziché 1.

    Questo perché hai dimenticato di "chiudere" la stringa text con "#"

    text = Join(Application.Transpose(r), "#") & "#"


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di Vecchio Frac data: 06/04/2015 12:59:05

    +1
    Grazie Scossa.






  • di scossa data: 06/04/2015 13:07:19

    Visto che ci sono, propongo la solita variante VBA della formula che ho proposto lato celle.



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

     
    Function conta_di(ByRef r As Range, fnd As String) As Long
        conta_di = Evaluate("SUMPRODUCT(--(EXACT(""" & fnd & """," & r.Address & ")))")
    End Function
    


  • Grazie
    di Klayman (utente non iscritto) data: 06/04/2015 14:57:37

    GRAZIE! Spettacolare!!!!!! Grazie a scossa e a tutti gli altri! PS: Possibile che non possano mettere una funzione semplice per una necessità secondo me molto frequente!!!



  • di scossa data: 06/04/2015 17:35:57

    cit. X: "Possibile che non possano mettere una funzione semplice per una necessità secondo me molto frequente"


    Non mi sembra una mancanza "pesante", visto che combinando due funzioni native, come nella formula che ti ho suggerito, ottieni il risultato voluto.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)