Condividi:        

[excel 2007] Creare Foglio Statistiche

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

Re: [excel 2007] Creare Foglio Statistiche

Postdi contiend » 04/02/14 09:39

Quindi utilizzando la tua ottima macro, dovrei aggiungere alla tua formula la matrice somma prodotto? In questo modo:

Codice: Seleziona tutto
Sub contisub()
Dim I As Long, J As Long, K As Long, NumVoti As Long, SumVoti As Single
Dim myName As String
'I = Cells(1, 5)
'If Cells(1, 5).Value = 0 Then Beep

'Scan nomi su Riepilogo:
For I = 2 To Cells(Rows.Count, "B").End(xlUp).Row
    If Cells(I, 2).Value <> "" Then
        myName = Cells(I, 2)
        SumVoti = 0: NumVoti = 0
        'Scan Fogli:
        For J = 1 To Worksheets.Count
            If Left(Sheets(J).Name, 3) = "CAM" Then
                'su ogni foglio "CAMxx"
                With Sheets(J)
                    For K = 1 To .Cells(Rows.Count, 4).End(xlUp).Row
                    zzz = .Cells(K, 4).Value: xxx = Sheets(J).Name
                    zzz = 1
                        If UCase(.Cells(K, 4).Value) = UCase(Cells(I, 2).Value) Then
                            If .Cells(K, "G").Value > 0 Then
                            'numero voti e somma voti
                                NumVoti = NumVoti + 1
                                SumVoti = SumVoti + .Cells(K, "G").Value
                            'spazio per gli altri calcoli
                                '..
                                '..
                            End If
                        End If
                    Next K
                End With
            End If
        Next J
        'Voti e media voti:
        Cells(I, 3) = NumVoti
        If NumVoti > 0 Then Cells(I, 4) = SumVoti / NumVoti
        'Spazio per altri risultati:
            MATR.SOMMA.PRODOTTO(--('CAM01'!$D:$D=B2);'CAM01'!H:H)
            MATR.SOMMA.PRODOTTO(--('CAM02'!$D:$D=B2);'CAM02'!H:H)
    End If
Next I
End Sub
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 172
Iscritto il: 20/04/09 17:45

Sponsor
 

Re: [excel 2007] Creare Foglio Statistiche

Postdi contiend » 04/02/14 10:02

Immagino di aver scritto una ca**ata dato che non funziona più nulla :oops:

Dato che mi pare di capire che non si può fare per le colonne che vanno da E ad O

sarebbe possibile aggiungere alla MACRO (però dovresti farmelo tu perché io non so da dove cominciare :( :cry: ),
il calcolo ANCHE della COLONNA P (in riepilogo) ??

Immagine

In pratica la COL.P prende in esame il totale delle COL.S (presenti in CAMxx) e ne fa la MEDIA totale per il numero di volte che è presente quel giocatore.

In spiccioli, la stessa cosa fatta per COL.D (MEDIA VOTO) che prendeva in esame la COL.G (in CAMxX)
ma con l'associazione COL.P (RIEPILOGO) e COL.S (CAMxx)

Immagine

??

Grazie
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 172
Iscritto il: 20/04/09 17:45

Re: [excel 2007] Creare Foglio Statistiche

Postdi Anthony47 » 04/02/14 22:50

Quando suggerisco qualcosa cerco di suggerire la cosa piu' in linea con le capacita' di manutenzione dell' utente; in questo caso evidentemente siamo oltre.
Spendero' quindi un ulteriore slot di tempo per descrivere come puoi fare tutti gli ampliamenti che ti servono.
La prima parte della macro e' orientata a scansionare tutti i nominativi del foglio Riepilogo [For I = 2 To Cells(etc etc)]; per ogni nominativo si scansionano i fogli alla ricerca di quelli che si chiamano "CAM...."[ For J = 1 To Worksheets.Count]; all' interno di ogni foglio si scansionano i nominativi in colonna D [For K = 1 To .Cells(Rows.Count,etc etc)] alla ricerca di quello che corrisponde al nominativo in esame su foglio Riepilogo [If UCase(.Cells(K, 4).Value) = UCase(Cells(I, 2).Value) Then].
Dopo l' istruzione If UCase(.Cells(K, 4).Value) = UCase(Cells(I, 2).Value) Then siamo nella situazione che il moninativo identificato dalla variabile K corrisponde a quello su riga I di Riepilogo; quindi e' sui dati di questa riga che si devono fare i calcoli voluti.
Io avevo inserito il calcolo della media dei voti, calcolando la somma dei voti validi e il loro numero.

Ora tu vuoi ripetere il calcolo della media delle medie (colonna S di CAMxxx), come avevamo fatto per la media dei punteggi, che era stato gestito con questo codice:
Codice: Seleziona tutto
                                If .Cells(K, "G").Value > 0 Then
                                'numero voti e somma voti
                                    NumVoti = NumVoti + 1
                                    SumVoti = SumVoti + .Cells(K, "G").Value
                                End If

Il nuovo calcolo lo gestiremo allo stesso modo:
Codice: Seleziona tutto
                                '
                                If .Cells(K, "S").Value > 0 Then
                                'numero medie e somma medie
                                    NumMEdia = NumMEdia + 1
                                    SumMEdia = SumMEdia + .Cells(K, "S").Value
                                End If
                                'spazio per gli altri calcoli

Queste istruzioni vanno sotto le istruzioni precedenti. Cambiano solo il nome delle variabili in cui facciamo i conteggi e il numero di colonna in cui leggere i dati.

OVVIAMENTE finiti i calcoli (cioe' finito il giro in tutti i fogli CAMxx) il valore calcolato va inserito su foglio Riepilogo. Avevamo usato:
Codice: Seleziona tutto
            'Voti e media voti:
            Cells(I, 3) = NumVoti
            If NumVoti > 0 Then Cells(I, 4) = SumVoti / NumVoti

Aggiungeremo per scrivere la media delle medie
Codice: Seleziona tutto
            'media delle medie in colonna 16=P
            If NumMEdia > 0 Then Cells(I, 16) = SumMEdia / NumMEdia
            'Spazio per altri risultati:

OVVIAMENTE2 le nuove variabili vanno azzerate a inizio ciclo; avevamo usato
Codice: Seleziona tutto
            SumVoti = 0: NumVoti = 0

aggiungeremo
Codice: Seleziona tutto
            SumMEdia = 0: NumMEdia = 0


INFINE e' opportuno che le nuove variabili vengano dichiarate in testa al modulo; avevamo usato
Codice: Seleziona tutto
    Dim . . . . . , NumVoti As Long, SumVoti As Single

aggiungeremo
Codice: Seleziona tutto
    Dim NumMEdia As Long, SumMEdia As Single


Questo e' tutto...
Inserisco l' intera macro, inserendo tutte le istruzioni descritte sopra, con un paio di commenti aggiuntivi e con la rimozione di un paio di righe che erano servite solo durante il debug.
Codice: Seleziona tutto
Sub contisub2()
Dim I As Long, J As Long, K As Long, NumVoti As Long, SumVoti As Single
Dim NumMEdia As Long, SumMEdia As Single
Dim myName As String
'I = Cells(1, 5)
'If Cells(1, 5).Value = 0 Then Beep

'Scan nomi su Riepilogo:
For I = 2 To Cells(Rows.Count, "B").End(xlUp).Row
    If Cells(I, 2).Value <> "" Then
        myName = Cells(I, 2)
        SumVoti = 0: NumVoti = 0
        SumMEdia = 0: NumMEdia = 0
        'Scan Fogli:
        For J = 1 To Worksheets.Count
            If Left(Sheets(J).Name, 3) = "CAM" Then
                'su ogni foglio "CAMxx"
                With Sheets(J)
                    For K = 1 To .Cells(Rows.Count, 4).End(xlUp).Row
                        If UCase(.Cells(K, 4).Value) = UCase(Cells(I, 2).Value) Then
'Calcoli relativi ai singoli atleti
                            If .Cells(K, "G").Value > 0 Then
                            'numero voti e somma voti
                                NumVoti = NumVoti + 1
                                SumVoti = SumVoti + .Cells(K, "G").Value
                            End If
                            '
                            If .Cells(K, "S").Value > 0 Then
                            'numero medie e somma medie
                                NumMEdia = NumMEdia + 1
                                SumMEdia = SumMEdia + .Cells(K, "S").Value
                            End If
                            'spazio per gli altri calcoli
                                '..
                                '..
                                '..
                        End If
                    Next K
                End With
            End If
        Next J
'Scrittura dei dati calcolati su foglio Riepilogo
        'Voti e media voti:
        Cells(I, 3) = NumVoti
        If NumVoti > 0 Then Cells(I, 4) = SumVoti / NumVoti
        'media delle medie in colonna 16=P
        If NumMEdia > 0 Then Cells(I, 16) = SumMEdia / NumMEdia
        'Spazio per altri risultati:
            '..
            '..
    End If
Next I
End Sub

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

Re: [excel 2007] Creare Foglio Statistiche

Postdi contiend » 05/02/14 22:51

Posso solo RIPETERMI.

GRAZIE!

Funziona tutto.

Grazie della pazienza e della disponibilità!
Windows 10
OFFICE 2010
Avatar utente
contiend
Utente Senior
 
Post: 172
Iscritto il: 20/04/09 17:45

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[excel 2007] Creare Foglio Statistiche":


Chi c’è in linea

Visitano il forum: Nessuno e 49 ospiti