Condividi:        

RIcerca Frequenza di una determinata serie di numeri

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

RIcerca Frequenza di una determinata serie di numeri

Postdi bluect » 22/04/15 23:45

Ciao a tutti,

Avrei la necessità di contare la frequenza di una determinata serie di numeri.
Mi spiego meglio con un esempio.

La colonna A1 contiene i seguenti dati:

1
3
5
1
3
4
12
3
5

Da questa colonna vorrei sapere con quale frequenza e' presente la serie di dati 3 e 5. In questo esempio e' chiaro che la serie di dati 3 e 5 e' presente una sola volta.

MI servirebbe una formula o magari il codice VBA per individuare la frequenza su un lungo elenco di numeri data una determinata serie che puo' essere di due o piu' numeri.

Ringrazio in anticipo chi mi potrà aiutare.

Carlo
bluect
Newbie
 
Post: 6
Iscritto il: 22/04/15 23:37

Sponsor
 

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi ricky53 » 22/04/15 23:52

Ciao,
prima di tutto benvenuto nel nostro forum.

Con le formule non saprei esserti utile con il VBA ci posso provare ma mi occorrono degli esempi più esaustivi.
Infine la frequenza da quale massimo numero di valori può essere costituita?

La tua effettiva esigenza è proprio e solo questa?
Il termine "frequenza" mi fa venire dei dubbi/perplessità sulle tue necessità!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi Anthony47 » 23/04/15 00:53

bluect ha scritto:In questo esempio e' chiaro che la serie di dati 3 e 5 e' presente una sola volta.
Io ne vedo due :-?

Questo in aggiunta alle considerazioni /dubbi / richieste di Ricky (vedi sopra).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi Flash30005 » 23/04/15 01:43

Ciao Bluect e benvenuto nel Forum

Leggi i post precedenti perché anche per me era poco chiara la richiesta
comunque ho supposto che il numero massimo dei componenti la serie fosse 5 (oltre non funziona)
I numeri della serie vanno inseriti nella riga 1 dalla colonna G verso destra quindi G1, H1, I1, J1, e K1
Codice: Seleziona tutto
Sub TrovaFreq2()

UC = Cells(1, Columns.Count).End(xlToLeft).Column
If UC < 7 Then Exit Sub
Range("G2:H2").ClearContents
Dim VN(5) As Integer
QN = UC - 6
For CC = 7 To 11
VN(CC - 6) = Cells(1, CC).Value
Next CC
UR = Range("A" & Rows.Count).End(xlUp).Row
For RR = 2 To UR
Range("G2").ClearContents
    If VN(1) = Range("A" & RR) Then Range("G2").Value = Range("G2").Value + 1
    If QN > 1 Then
        If VN(2) = Range("A" & RR + 1) Then Range("G2").Value = Range("G2").Value + 1
        If QN > 2 Then
            If VN(3) = Range("A" & RR + 2) Then Range("G2").Value = Range("G2").Value + 1
            If QN > 3 Then
                If VN(4) = Range("A" & RR + 3) Then Range("G2").Value = Range("G2").Value + 1
                If QN > 4 Then
                    If VN(5) = Range("A" & RR + 4) Then Range("G2").Value = Range("G2").Value + 1
                End If
            End If
        End If
    End If
    If Range("G2").Value = QN Then
        Range("H2").Value = Range("H2").Value + 1
    End If
Next RR
 Range("G2").Value = "Freq"
End Sub


La macro processa i numeri a partire da A2 e trascrive la frequenza in H2
E' spartana ma funziona

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi bluect » 23/04/15 06:43

Scusate se mi sono espresso male..
Provo con un altro esempio.

Prendiamo il gioco della roulette. Inseriamo nella colonna A1 1000 permanenze (numeri usciti). Quindi ogni riga contiene un numero uscito alla roulette che puo' andare da 0 a 36. A me interessa individuare la frequenza con la quale una certa sequenza di numeri si ripete. Prendiamo ad esempio la seguente colonna A1 dove riporto solo pochi numeri per semplicita':

0
1
5
8
1
5
2
8
1
2
8
1

Come e' possibile vedere, la sequenza di numeri 1 5 si ripete due volte. Mentre la sequenza 28 e 281 si ripete due volte.

A me interessa calcolare in automatico quante volte una determinata serie di numeri (che puo' andare da 2 a 5) compare all'interno di una sequenza di numeri. Sarebbe interessante se si potesse fare in modo che il codice individui da solo le serie presenti. Ovvero analizzando tutte le possibili combinazioni fosse in grado di individuare le serie di numeri che si ripetono. Capisco che questa richiesta possa essere alquanto complessa, pertanto mi sono limitato a chiedere di individuare una serie di numeri (che puo' andare da 2 a 5) gia' conosciuta.

In pratica voglio vedere quante volte (ovvero la frequenza) un croupier fa uscire la stessa sequenza di numeri e quanto e' lunga
questa sequenza. Sicuramente sara' raro trovare una sequenza formata da 5 numeri uguali. Mentre sara' molto piu' probabile trovare una sequenza formata da 2 numeri.

Spero di essere stato chiaro.

Grazie,

Carlo
bluect
Newbie
 
Post: 6
Iscritto il: 22/04/15 23:37

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi Flash30005 » 23/04/15 09:42

La macro che ti ho postato fa quello da te richiesto nella prima istanza
Ma vedo che non l'hai nemmeno provata pertanto non perderò altro tempo per cercare una soluzione al nuovo quesito.

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi Anthony47 » 23/04/15 13:15

Se i dati sono in colonna A, da A2 verso il basso, e i risultati si vogliono riepilogare in colonna F:G, allora prova questo codice:
Codice: Seleziona tutto
Dim DArr
Sub peppa()
Dim I As Long, J As Long, K As Long, SerCnt As Long
Dim LastA As Long, mySer As String, myTim As Single
'
LastA = Cells(Rows.Count, 1).End(xlUp).Row
myTim = Timer
DArr = Range("A1").Resize(LastA, 1).Value
With Range("F2").Resize(Rows.Count - 2, 2)
    .ClearContents
    .NumberFormat = "@"
End With
For I = 2 To 5
    For J = 2 To LastA - I
        SerCnt = 0
        mySer = GetSer(I, J)
        If mySer <> "" Then
            For K = J To LastA - I
                If GetCSer(I, K) = mySer Then SerCnt = SerCnt + 1
            Next K
            If SerCnt > 1 Then
                Cells(Rows.Count, "F").End(xlUp).Offset(1, 0) = mySer
                Cells(Rows.Count, "F").End(xlUp).Offset(0, 1) = SerCnt
            End If
        End If
    Next J
Next I
MsgBox ("Completato (" & Format(Timer - myTim, "0.00") & " Sec)")
End Sub


Function GetSer(ByVal myI, myJ) As String
Dim II As Long, Ser As String
'
For II = 0 To myI - 1
    Ser = Ser & "-" & DArr(myJ + II, 1)
Next II
Ser = Mid(Ser, 2, 999)
If Application.WorksheetFunction.CountIf(Range("F1").Resize(10000, 1), Ser) > 0 Then
    GetSer = ""
Else
    GetSer = Ser
End If
End Function

Function GetCSer(ByVal myI As Integer, ByVal myK As Integer)
Dim II As Long, Ser As String
'
For II = 0 To myI - 1
    Ser = Ser & "-" & DArr(myK + II, 1)
Next II
Ser = Mid(Ser, 2, 999)
GetCSer = Ser
'
End Function
Va messo all' interno di un "nuovo Modulo", e poi lanciata la macro peppa.

In colonna F saranno riepilogate le sequenze con almeno 2 occorrenze, in colonna G il numero di occorrenze.
Volendo puoi ordinare questo elenco secondo i criteri di tuo interesse, accodando una macro autoregistrata.

Flash, io non sono riuscito a far funzionare la tua macro, forse perche' non ho capito quali passi iniziali fare.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi ricky53 » 23/04/15 13:46

Ciao,
Flash:
ho provato la tua macro e fornisce i risultati cercati!
In "H2" scrive la frequenza prendendo i numeri dall'intervallo G1:K1.



Anthony: troppa grazia addirittura tutte le combinazioni con la frequenza.

Propongo un mio esempio: ho fatto una cosa più semplice basandomi sui dati utilizzati da Flash.
I numeri di cui ricercare la frequenza sono nelle celle G1, H1, ecc fino a volontà (anche più di 5), ma sempre sulla riga "1"
Codice: Seleziona tutto
Option Explicit

Sub Frequenza_Valori_Calcola()
' di Ricky53
    Dim UC As Integer, UR As Long, RR As Long, CC As Integer, Elem As Integer, Num As Integer, VN As String, Freq As String
    Dim Inizio As Double
   
    Inizio = Timer
    UC = Cells(1, Columns.Count).End(xlToLeft).Column
    If UC < 7 Then Exit Sub
    Range("G2:H2").ClearContents
    For CC = 7 To UC
        VN = VN & "-" & Cells(1, CC).Value
    Next CC
    UR = Range("A" & Rows.Count).End(xlUp).Row
    Range("G2") = "Frequenza"
    Freq = ""
    Elem = 0
    Num = UC - 6
    For RR = 2 To UR
        Freq = Freq & "-" & Cells(RR, 1)
        Elem = Elem + 1
        If Elem >= Num Then
            If Freq = VN Then
                Range("H2") = Range("H2") + 1
            End If
            Freq = ""
            Elem = 0
        End If
        If Cells(RR, 1) = Range("G1") Then
            Freq = "-" & Cells(RR, 1)
            Elem = 1
       
        End If
    Next RR
    MsgBox "Elaborazione effettuata." & vbCrLf & vbCrLf & "Trovate  " & [H2] & "  sequenze" & vbCrLf & vbCrLf & _
        "In  '" & Format(Timer - Inizio, "0.000") & "'  secondi"
End Sub


Ovviamente ci aspettiamo da "bluect" una risposta su tutte e tre le nostre proposte.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi Anthony47 » 23/04/15 14:03

Ricky, Flash: ma che devo scrivere in G1:K1?
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi Flash30005 » 23/04/15 15:08

@Anthony

la serie di numeri da ricercare come indicato nel primo post es.: il 3 e il 5 o altra combinazione.
E' chiaro che quella macro non soddisfa l'ultima richiesta.

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi bluect » 23/04/15 19:45

Ciao a tutti,

Vi spiego come faccio a far funzionare la prima macro che mi ha passato Flash.

In A2 si comincia a scrivere la sequenza di numeri come il seguente esempio:

2
1
3
4
5
6
7
8
9
10
2
1

Da G1 in poi scrivo la sequenza di numeri che voglio individuare. Ad esempio:
in G1 inserisco 2, In H1 inserisco 1 in I1 inserisco 3, ovvero voglio conoscere la frequenza della serie 2 1 3

Avvio la macro ed ottengo come freuenza 1 che e' corretto.

Se ad esempio in G1 inserisco 2 ed H1 inserisco 1 ed avvio la macro, ottengo come risultato 2, che e' corretto. E cosi' via. Pero' come diceva Flash, questa macro supporta solo fino a 5 numeri in sequenza (da G1 a K1).

Come vedete, la macro svolge egregiamente il suo lavoro!
bluect
Newbie
 
Post: 6
Iscritto il: 22/04/15 23:37

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi ninai » 23/04/15 20:18

ciao a tutti
forse non ho capito bene ma, in base al tuo ultimo esempio, (dati in A2:A12 e numeri da cercare in G1:I1), potrebbe bastare:
=MATR.SOMMA.PRODOTTO((A2:A13=G1)*(A3:A14=H1)*(A4:A15=I1))

Al momento è predisposta per 3 numeri, se si volesse rendere flessibile in base quanti numeri si vuole cercare, si potrebbe pensare a qualche variante
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi bluect » 23/04/15 20:29

Per concludere ho provato anche le macro di Anthony e di Ricky.

La Macro di Anthony fa esattamente quello che ho richiesto nel mio secondo post.. Trova automaticamente tutte le serie ricorrenti. Incredibile... Non pensavo si potesse fare!

Anche la macro di Ricky funziona bene...permette di trovare la serie definita dall'utente superiore a 5 elementi.

Ringrazio tutti e tre per l'aiuto che mi avete dato. Mi serviranno molto.. e se otterro' dei risultati soddisfacenti alla roulette vi faro' sapere :)

Grazie ancora per il tempo che avete dedicato alla mia richiesta!
bluect
Newbie
 
Post: 6
Iscritto il: 22/04/15 23:37

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi bluect » 23/04/15 20:34

CIao ninai,

Ho provato la tua formula..ma a me non funziona.. mi restituisce come valore 0. Ho inserito i dati nella colonna A2:A12 ed i numeri da cercare in g1:i1 ma non mi funziona. Sbaglio io qualcosa ?


ninai ha scritto:ciao a tutti
forse non ho capito bene ma, in base al tuo ultimo esempio, (dati in A2:A12 e numeri da cercare in G1:I1), potrebbe bastare:
=MATR.SOMMA.PRODOTTO((A2:A13=G1)*(A3:A14=H1)*(A4:A15=I1))

Al momento è predisposta per 3 numeri, se si volesse rendere flessibile in base quanti numeri si vuole cercare, si potrebbe pensare a qualche variante
bluect
Newbie
 
Post: 6
Iscritto il: 22/04/15 23:37

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi ninai » 23/04/15 20:50

i dati in A2:A13 (avevo sbagliato l'indicazione), allego file di prova

https://www.dropbox.com/s/2fs1u37ye4h6h ... .xlsx?dl=0
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina

Re: RIcerca Frequenza di una determinata serie di numeri

Postdi ninai » 23/04/15 21:00

per avere la dinamicità da 2 numeri (G1:H1) fino a 5 numeri (G1:K1), ho "rattoppato" questa:

=SCEGLI(CONTA.NUMERI(G1:K1)-1;MATR.SOMMA.PRODOTTO((A2:A13=G1)*(A3:A14=H1));MATR.SOMMA.PRODOTTO((A2:A13=G1)*(A3:A14=H1)*(A4:A15=I1));MATR.SOMMA.PRODOTTO((A2:A13=G1)*(A3:A14=H1)*(A4:A15=I1)*(A5:A16=J1));MATR.SOMMA.PRODOTTO((A2:A13=G1)*(A3:A14=H1)*(A4:A15=I1)*(A5:A16=J1)*(A6:A17=K1)))
w8 + Office 2010 Ita
ninai
Utente Senior
 
Post: 271
Iscritto il: 12/06/13 05:23
Località: prov. Messina


Torna a Applicazioni Office Windows


Topic correlati a "RIcerca Frequenza di una determinata serie di numeri":


Chi c’è in linea

Visitano il forum: Nessuno e 65 ospiti