Condividi:        

Frequenza Permutazioni

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

Frequenza Permutazioni

Postdi miko » 30/07/22 15:30

Buonasera e buon weekend a tutti,
sono alle prese con disposizioni con ripetizione
devo calcolare frequenza di ciascuna permutazione presente in un range di R righe e 6 colonne
come in figura

Immagine

come si vede in figura i numeri coinvolti variano da 1 a 5, almeno per il momento,
ma non escludo che il limite superiore possa aumentare, perciò questo potrebbe essere una incognita.
inoltre osservando ad esempio la prima e seconda riga le due permutazioni contengono gli stessi numeri
ma disposti in modo diverso nelle colonne
riga 1: 2 1 2
riga 2: 2 - 1 2 (il trattino indica la cella vuota)
così anche la riga 4 e 5
riga 4: 4 - - 1
riga 5: - 4 1 -
secondo i miei calcoli le possibili permutazioni, disposizioni con ripetizioni, con 5 numeri sono intorno a 15.000
ma non credo che sia necessario effettuare il calcolo ai fini del risultato, anche perché credo che non tutte le
possibili permutazioni sarebbero coinvolte.
il calcolo che prevedo deve calcolare le frequenze delle permutazioni presenti nel range e riportare su un altro foglio
sia l'elenco delle permutazioni presenti al momento, ed in corrispondenza di ciascuna la frequenza, ed ordinare
il range del risultato in base alla frequenza maggiore.
questa indicata mi sembra la soluzione più coerente e semplice, almeno per quello che riesco ad immaginare,
ma può essere soddisfacente qualunque altra soluzione.
non ho proprio idea di come strutturare la macro.
saluti, grazie
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: Frequenza Permutazioni

Postdi Anthony47 » 31/07/22 00:58

Proviamo a risparmiarci del lavoro...

Immagine

Con riferimento all’immagine, calcoliamo in colonna H la combinazione normalizzata di ogni riga; con Office 365 si potrebbe fare con una formula, qui invece dobbiamo farlo con questa “funzione personalizzata”:
Codice: Seleziona tutto
Function KeyComb(ByRef myRan As Range) As String
Dim wArr() As Single, I As Long, mMin As Single
'
ReDim wArr(1 To myRan.Columns.Count)
For I = 1 To UBound(wArr)
    wArr(I) = myRan.Cells(1, I)
    If Not IsError(Application.Match(wArr(I), wArr, False)) Then
        wArr(I) = wArr(I) + I / 1000
    End If
Next I
For I = 1 To UBound(wArr)
    mMin = Application.WorksheetFunction.Min(wArr)
    wArr(Application.Match(mMin, wArr, False)) = 999
    If mMin > 0.5 Then
        KeyComb = KeyComb & Int(mMin)
    End If
Next I
End Function

Metti il codice in un modulo standard del vba; poi torna su Excel e in H2 scrivi la formula
Codice: Seleziona tutto
=KeyComb(A2:G2)
(gestisce fino a 7 numeri)
Copia H2 verso il basso

Ora in I1 calcoliamo le presenze della prima combinazione, con questa formula
Codice: Seleziona tutto
=CONTA.SE($H$2:$H$20;H2)

Adatta H2:H20 alla tua situazione, poi copia verso il basso

A questo punto puoi ordinare tutto l’elenco per presenze decrescenti e puoi fare tutte le statistiche che ti servono

Puo’ essere sufficiente?
Avatar utente
Anthony47
Moderatore
 
Post: 19213
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Frequenza Permutazioni

Postdi miko » 01/08/22 17:24

Salve,
seguendo le tue istruzioni ottengo il risultato in figura che rispecchia il contenuto dell'immagine da te postata

Immagine

il codice funziona ma non ottengo il risultato che cercavo.
come si nota la key non distingue le diverse permutazioni, la 3-2 la considera uguale alla 2-3
così anche la 2-2-1 é uguale alla 2-1-2, ma in realtà sono diverse, tenuto conto anche delle celle di intestazione
e della posizione dei numeri delle permutazioni nelle celle;
la permutazione 3-2-0-0-0-0 é diversa dalla 0-3-2-0-0-0;
di conseguenza il risultato finale delle presenze é falsato e si ritrovano delle righe ripetute.
nell'esempio la presenza di 3-2 é 4, quella di 2-3 é 2.
inoltre dovendo esaminare migliaia di righe non saprei come ricopiare le formule per le celle sottostanti.
tuttavia se la soluzione del problema la consideri impegnativa propongo di lasciar perdere.
grazie, ciao
windows 10 - office 2013
miko
Utente Senior
 
Post: 521
Iscritto il: 29/12/09 10:44

Re: Frequenza Permutazioni

Postdi Anthony47 » 01/08/22 21:08

Questo e’ l’effetto di una descrizione diciamo leggera, che ha lasciato a me interpretare la situazione.

Se i vuoti e la posizione conta allora la funzione e’ piu’ semplice:
Codice: Seleziona tutto
Function KeyComb2(ByRef myRan As Range) As String
Dim I As Long
'
For I = 1 To myRan.Columns.Count
    KeyComb2 = KeyComb2 & "-" & myRan.Cells(1, I)
Next I
End Function


Se non sai come copiare la formula su tante righe allora ti propino la macro che calcola la chiave su tutta l’area:
Codice: Seleziona tutto
Sub KeyAll()
Dim LastR As Long, wArr, oArr() As String
Dim StaR As Long
'
StaR = 2                'Riga di Inizio Combinazioni (A:F)
'
On Error Resume Next
LastR = Range("A:F").Find(What:="*", After:=Range("A1"), _
    SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
On Error GoTo 0
wArr = Range("A" & StaR & ":F" & LastR).Value
ReDim oArr(1 To UBound(wArr) + StaR, 1 To 1)
For I = 1 To UBound(wArr)
    mkey = ""
    For J = 1 To UBound(wArr, 2)
        oArr(I, 1) = oArr(I, 1) & "-" & wArr(I, J)
    Next J

Next I
Cells(StaR, "H").Resize(UBound(oArr), 1) = oArr
End Sub

Lanciata una volta scrive il colonna H la chiave delle combinazioni; Puoi contare in colonna I il numero di ogni combinazione con la formula gia’ data; poi su questi dati ordini e fai le altre statistiche che servono

Prova...
Avatar utente
Anthony47
Moderatore
 
Post: 19213
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Frequenza Permutazioni":


Chi c’è in linea

Visitano il forum: Nessuno e 45 ospiti