Condividi:        

Somma percentuale punti partita

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

Somma percentuale punti partita

Postdi robygragio » 15/12/12 15:52

eccomi di nuovo qua a chiedervi un piccolo aiuto, ho un file exel con un foglio classifica totate di un torneo, che somma i dati da altri fogli (per adesso 4)che aggiungero man mano che il torneo va avanti, il mio problema e questo che ho messo la formula
Codice: Seleziona tutto
=SE.ERRORE(CERCA.VERT($C3;(Torneo_1!$C$3:$F$6);2;0)+CERCA.VERT($C3;(Torneo_2!$C$3:$F$6);2;0)+CERCA.VERT($C3;(Torneo_3!$C$3:$F$6);2;0)+CERCA.VERT($C3;(Torneo_4!$C$3:$F$6);2;0);"")
la formula fa il suo dovere, ma se arrivo a 30 fogli da conteggiare la formula diventera un pochettino lunga da gestire e dovro tutte le volte aggiustare la formula, volevo sapre se ce una formula o una macro che fa questo in automatico.

File Exel : http://www.mediafire.com/?11z9z36i1zfsk3p
Win7 + Office 2007 Ita
robygragio
Utente Junior
 
Post: 29
Iscritto il: 09/12/12 12:58

Sponsor
 

Re: Somma percentuale punti partita

Postdi Anthony47 » 15/12/12 19:20

Hai questo problema perche' nelle singole tabelle di torneo i nomi sono in sequenza diversa.
Segui il mio consiglio:
-aggiungi un Foglio in coda a quello dei tornei, e chiamalo Dummy
-metti questa macro nel modulo QuestaCartellaDiLavoro
Codice: Seleziona tutto
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    With Sh
        .Range("C2:F7").Sort Key1:=.Range("C3"), Key2:=.Range("D3"), Order1:=xlDescending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    End With
End Sub

-Poi nel foglio Classifica, in D3 inserisci la formula
Codice: Seleziona tutto
=SOMMA(Torneo_1:Dummy!D3)

-copia la formula in E3 e poi verso il basso.
Per avere la classifica corretta dovrai selezionare (solo la prima volta) uno alla volta tutti i fogli Tornei e riposizionarti su Classifica (poi non sara' piu' necessario farlo).
In questo modo quando deselezioni un foglio esso sara' riordinato per nominativo, consentendo quindi il calcolo dei punteggi con la formula a "riferimento 3D" che ti ho dato sopra.
Quando vorrai aggiungere un torneo, inserirai il relativo foglio PRIMA del foglio Dummy, e sara' automaticamente inserito nei calcoli, ovviamente e' importante che il layout dei dati in Classifica e nei singoli Tornei sia lo stesso.

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

Re: Somma percentuale punti partita

Postdi robygragio » 15/12/12 22:13

ciao anthony grazie per la formula, funziona benissimo ma da quello che ho capito questa formula non fa una somma mirata in base a nome del giocatore come la mia formula, quindi i nomi devono essere per forza in ordine come il primo foglio classifica, quindi non ce un modo per farlo piu mirato?
nel senso che se in un foglio manca un giocatore ho ce ne uno in piu mi sballera tutto
Win7 + Office 2007 Ita
robygragio
Utente Junior
 
Post: 29
Iscritto il: 09/12/12 12:58

Re: Somma percentuale punti partita

Postdi Anthony47 » 17/12/12 00:57

Se ti serve conservare la possibilita' di avere su ogni torneo nominativi diversi allora devi andare su una macro.
Ad esempio:
Codice: Seleziona tutto
Function scantorn(ByVal player As String, ByVal forCosa As String, ByVal TabTorn As Range) As Variant
Dim I As Long, HInd As Long, VInd As Long, myScore
'
For I = 1 To ThisWorkbook.Worksheets.Count
If Sheets(I).Name <> "Classifica" Then
    HInd = Application.WorksheetFunction.CountIf(Sheets(I).Range(TabTorn.Address).Resize(1), forCosa)
    If HInd = 0 Then
        scantorn = "##LErr-#" & I: Exit Function
    Else
        HInd = Application.Match(forCosa, Sheets(I).Range(TabTorn.Address).Resize(1), 0)
    End If
    VInd = Application.WorksheetFunction.CountIf(Sheets(I).Range(TabTorn.Address).Resize(, 1), player)
    If VInd > 0 Then
        VInd = Application.Match(player, Sheets(I).Range(TabTorn.Address).Resize(, 1), 0)
        myScore = myScore + CDbl(Sheets(I).Range(TabTorn.Address).Cells(VInd, HInd))
    End If
End If
Next I
scantorn = myScore
End Function

Carica il codice su un Modulo standard del vba (es Modulo1), poi D3 del foglio Classifica inserisci la formula
Codice: Seleziona tutto
=scantorn($C3;D$2;$C$2:$F$18)
C3 rappresenta il Giocatore che sara' cercato nei singoli tornei; D2 e' il punteggio che sara' preso in considerazione; C2:F18 rappresenta l' area in cui, su ogni foglio, e' contenua la tabella dei risultati; adatta la formula al layout dei tuoi dati.
Copia la formula in E3, poi copia D3:E3 verso il basso per i giocatori presenti in Classifica.
In caso di errori formali la formula ritornera' #VALORE oppure ##LErr-#xy se nel foglio xy non e' stata trovata l' intestazione di colonna contenente il punteggio che si cerca. Per evitare questo errore inserire nuovi fogli "Torneo" contenenti almeno le intestazioni di tabella.

Per assicurarsi che il punteggio calcolato sia aggiornato, tasto dx sut tab che corrisponde al foglio Classifica (quindi il Tab che visualizza "Classifica"), scegli Visualizza codice, inserisci questo codice:
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Calculate
End Sub

Elimina infine la Private Sub Workbook_SheetDeactivate che ti avevo fatto mettere ieri.

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

Re: Somma percentuale punti partita

Postdi robygragio » 17/12/12 20:12

ciao anthony va tutto a meraviglia cosi, grazie infinite
Win7 + Office 2007 Ita
robygragio
Utente Junior
 
Post: 29
Iscritto il: 09/12/12 12:58


Torna a Applicazioni Office Windows


Topic correlati a "Somma percentuale punti partita":


Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti