Moderatori: Anthony47, Flash30005
Anthony47 ha scritto:Ehm... purtroppo non capisco il linguaggio della pesca sportiva, in aggiunta non dai nessuna indicazione sul tracciato dei tuoi dati; quindi non so tradurre in formula quanto dici.
Pubblica uno screenshot da cui si veda quali sono i tuoi dati e in quali righe /colonne si trovano e "forse" potremo fare di piu'.
Per come fare guarda qui: viewtopic.php?f=26&t=80395#p466013
Per pubblicare il link devi aver almeno 3 messaggi pubblicati, puoi scriverne uno vuoto solo per fare numero.
Ciao
Anthony47 ha scritto:Ehm... purtroppo l' immagine non mi ha ispirato nulla; anzi non capisco perche' dovrebbe esserci una situazione di ex-equo visto che tra D e C ci sono punteggi e pesi diversi.
Tutto questo ragionando nel mondo di excel, ignorando tutto del mondo fips; ma ce la possiamo fare...
Flash30005 ha scritto:Potresti inviare il file con i dati di partenza, seguendo la procedura indicata in questo topic?
http://www.pc-facile.com/forum/viewtopic.php?f=26&t=80395ù
Ciao
Sub ContaP()
Range("D5:D9").ClearContents
For RR = 5 To 9
If Range("E" & RR) = Range("E" & RR + 1) Then
Range("D" & RR).Value = RR - 4 + 0.5
Else
If Range("E" & RR) = Range("E" & RR - 1) Then
Range("D" & RR).Value = Range("D" & RR - 1).Value
Else
Range("D" & RR).Value = RR - 4
End If
End If
Next RR
End Sub
Flash30005 ha scritto:Per il momento questa macro soddisfa il punteggio da te inviato tramite immagine
- Codice: Seleziona tutto
Sub ContaP()
Range("D5:D9").ClearContents
For RR = 5 To 9
If Range("E" & RR) = Range("E" & RR + 1) Then
Range("D" & RR).Value = RR - 4 + 0.5
Else
If Range("E" & RR) = Range("E" & RR - 1) Then
Range("D" & RR).Value = Range("D" & RR - 1).Value
Else
Range("D" & RR).Value = RR - 4
End If
End If
Next RR
End Sub
se non va bene pe altri tipi di condizioni (tipo 1°, 2°, 3° con parità pesci)
dovresti fare ulteriori esempi
ciao
giank1966 ha scritto:Flash30005 ha scritto:Per il momento questa macro soddisfa il punteggio da te inviato tramite immagine
- Codice: Seleziona tutto
Sub ContaP()
Range("D5:D9").ClearContents
For RR = 5 To 9
If Range("E" & RR) = Range("E" & RR + 1) Then
Range("D" & RR).Value = RR - 4 + 0.5
Else
If Range("E" & RR) = Range("E" & RR - 1) Then
Range("D" & RR).Value = Range("D" & RR - 1).Value
Else
Range("D" & RR).Value = RR - 4
End If
End If
Next RR
End Sub
se non va bene pe altri tipi di condizioni (tipo 1°, 2°, 3° con parità pesci)
dovresti fare ulteriori esempi
ciao
Flash!!!! sei 1 mito!!!!
partendo dal mio foglio iniziale Ti mando, appena possibile, le varie combinazioni...
Grazie 100000000
a presto
Ciao
G
Flash30005 ha scritto:Infatti
Vorrei sapere o capire in caso di 3 concorrenti con stessa quantità di pesci al 1° posto, al 2° posto, al 3° posto
con 4 concorrenti pesci uguali al 1° e al secondo posto e infine
con 5 concorrenti con stesso numero di pesci
penso, così, di avere tutte le combinazioni e poter procedere alla modifica della macro
ciao
Sub ContaPT()
Range("D5:D9").ClearContents
Conta = 0
For RR1 = 5 To 8
For RR2 = RR1 + 1 To 9
If Range("E" & RR1).Value = Range("E" & RR2).Value Then
Conta = Conta + 1
End If
Next RR2
Next RR1
Select Case Conta
Case 0
Conta = 1
Case 1
Conta = 2
Case 3
Conta = 3
Case 6
Conta = 4
Case 10
Conta = 5
End Select
For RR = 5 To 9
If Range("E" & RR) = Range("E" & RR + 1) Then
ValP = 0
For RRP = RR - 4 To Conta + RR - 5
ValP = ValP + RRP
Next RRP
ValF = ValP / Conta
For RRP = RR - 4 To Conta + RR - 5
Range("D" & RRP + 4).Value = ValF
RR = RR + 1
Next RRP
RR = RR - 1
Else
Range("D" & RR).Value = RR - 4
End If
Next RR
End Sub
Flash30005 ha scritto:Prova questa acro
- Codice: Seleziona tutto
Sub ContaPT()
Range("D5:D9").ClearContents
Conta = 0
For RR1 = 5 To 8
For RR2 = RR1 + 1 To 9
If Range("E" & RR1).Value = Range("E" & RR2).Value Then
Conta = Conta + 1
End If
Next RR2
Next RR1
Select Case Conta
Case 0
Conta = 1
Case 1
Conta = 2
Case 3
Conta = 3
Case 6
Conta = 4
Case 10
Conta = 5
End Select
For RR = 5 To 9
If Range("E" & RR) = Range("E" & RR + 1) Then
ValP = 0
For RRP = RR - 4 To Conta + RR - 5
ValP = ValP + RRP
Next RRP
ValF = ValP / Conta
For RRP = RR - 4 To Conta + RR - 5
Range("D" & RRP + 4).Value = ValF
RR = RR + 1
Next RRP
RR = RR - 1
Else
Range("D" & RR).Value = RR - 4
End If
Next RR
End Sub
Ciao
Sub ContaPT2()
Range("D5:D9").ClearContents
Pt = 0
For RR1 = 5 To 9
For RR2 = 9 To RR Step -1
If Range("E" & RR1).Value = Range("E" & RR2).Value Then
Pt = RR2 - RR1 + 1
ValP = 0
For RRP = RR1 - 4 To Pt + RR1 - 5
ValP = ValP + RRP
Next RRP
ValF = ValP / Pt
For RRP = RR1 - 4 To Pt + RR1 - 5
Range("D" & RRP + 4).Value = ValF
RR1 = RR1 + 1
Next RRP
RR1 = RR1 - 1
GoTo SaltaRR1
Else
Range("D" & RR1).Value = RR1 - 4
End If
Next RR2
SaltaRR1:
Next RR1
End Sub
Flash30005 ha scritto::roll:
Vediamo ora con questa macro semplificata
- Codice: Seleziona tutto
Sub ContaPT2()
Range("D5:D9").ClearContents
Pt = 0
For RR1 = 5 To 9
For RR2 = 9 To RR Step -1
If Range("E" & RR1).Value = Range("E" & RR2).Value Then
Pt = RR2 - RR1 + 1
ValP = 0
For RRP = RR1 - 4 To Pt + RR1 - 5
ValP = ValP + RRP
Next RRP
ValF = ValP / Pt
For RRP = RR1 - 4 To Pt + RR1 - 5
Range("D" & RRP + 4).Value = ValF
RR1 = RR1 + 1
Next RRP
RR1 = RR1 - 1
GoTo SaltaRR1
Else
Range("D" & RR1).Value = RR1 - 4
End If
Next RR2
SaltaRR1:
Next RR1
End Sub
Ciao
Sub ContaPT2()
Range("D5:D9").ClearContents '<<<< Cancellazione del punteggio tecnico da D5 a D9 cambia se non è questo
Pt = 0
For RR1 = 5 To 9 '<<<< queste sono le righe da 5 a 9 varia secondo le esigenze
For RR2 = 9 To RR1 Step -1 '<<<< 9 è la riga ultima varia secondo le esigenze
If Range("E" & RR1).Value = Range("E" & RR2).Value Then '<<<< cambia la colonna se non è la "E" dove c'è il numero dei pesci
Pt = RR2 - RR1 + 1
ValP = 0
For RRP = RR1 - 4 To Pt + RR1 - 5
ValP = ValP + RRP
Next RRP
ValF = ValP / Pt
For RRP = RR1 - 4 To Pt + RR1 - 5
Range("D" & RRP + 4).Value = ValF '<<<<< Nella colonna "D" scrive il punteggio tecnico cambia se non è D
RR1 = RR1 + 1
Next RRP
RR1 = RR1 - 1
GoTo SaltaRR1
Else
Range("D" & RR1).Value = RR1 - 4 '<<<<< Nella colonna "D" scrive il punteggio tecnico cambia se non è D
End If
Next RR2
SaltaRR1:
Next RR1
End Sub
Flash30005 ha scritto:Ti riposto la macro con i commenti da modificare nel caso non siano uguali
- Codice: Seleziona tutto
Sub ContaPT2()
Range("D5:D9").ClearContents '<<<< Cancellazione del punteggio tecnico da D5 a D9 cambia se non è questo
Pt = 0
For RR1 = 5 To 9 '<<<< queste sono le righe da 5 a 9 varia secondo le esigenze
For RR2 = 9 To RR1 Step -1 '<<<< 9 è la riga ultima varia secondo le esigenze
If Range("E" & RR1).Value = Range("E" & RR2).Value Then '<<<< cambia la colonna se non è la "E" dove c'è il numero dei pesci
Pt = RR2 - RR1 + 1
ValP = 0
For RRP = RR1 - 4 To Pt + RR1 - 5
ValP = ValP + RRP
Next RRP
ValF = ValP / Pt
For RRP = RR1 - 4 To Pt + RR1 - 5
Range("D" & RRP + 4).Value = ValF '<<<<< Nella colonna "D" scrive il punteggio tecnico cambia se non è D
RR1 = RR1 + 1
Next RRP
RR1 = RR1 - 1
GoTo SaltaRR1
Else
Range("D" & RR1).Value = RR1 - 4 '<<<<< Nella colonna "D" scrive il punteggio tecnico cambia se non è D
End If
Next RR2
SaltaRR1:
Next RR1
End Sub
Ciao
P.s. c'era un errore nel codice, errore che ho corretto in questa macro
=SOMMA.SE(D$2:D$6;D2;C$2:C$6)/CONTA.SE(D$2:D$6;D2)
=SOMMA.SE(SCARTO($D$1;CERCA(2;1/(C$1:C2=1);RIF.RIGA(C$1:C2))-1;0;5;1);D2;SCARTO($D$1;CERCA(2;1/(C$1:C2=1);RIF.RIGA(C$1:C2))-1;-1;5;1))/CONTA.SE(SCARTO($D$1;CERCA(2;1/(C$1:C2=1);RIF.RIGA(C$1:C2))-1;0;5;1);D2)
Anthony47 ha scritto:In alternativa alla macro dovrebbe andare bene anche questa formula
- Codice: Seleziona tutto
=SOMMA.SE(D$2:D$6;D2;C$2:C$6)/CONTA.SE(D$2:D$6;D2)
E' basata su questo layout dati:
Uploaded with ImageShack.us
Produce il risultato scritto in rosso.
Se il foglio contiene ulteriori gruppi di concorrenti, allora vanno riposizionati i riferimenti D$2:D$6 (2 volte) e C$2:C$6: copiata la formula in prima posizione si preme F2 e si trascinano col mouse i vari contorni cella; Enter e poi si copia la formula nelle posizioni sottostanti.
In alternativa si puo' usare questa formula che puo' essere copiata verso il basso su tutti i gruppi di concorrenti:
- Codice: Seleziona tutto
=SOMMA.SE(SCARTO($D$1;CERCA(2;1/(C$1:C2=1);RIF.RIGA(C$1:C2))-1;0;5;1);D2;SCARTO($D$1;CERCA(2;1/(C$1:C2=1);RIF.RIGA(C$1:C2))-1;-1;5;1))/CONTA.SE(SCARTO($D$1;CERCA(2;1/(C$1:C2=1);RIF.RIGA(C$1:C2))-1;0;5;1);D2)
Presuppone che i concorrenti siano gia' posizionati in ordine di "punteggio tecnico" crescente (colonna C crescente).
Se i gruppi non sono di 5 concorrenti nella formula vanno modificati quei tre "5" col numero effettivo di concorrenti (si modifica sulla prima posizione e poi si copia sui concorrenti sottostanti).
Ciao a tutti.
Torna a Applicazioni Office Windows
Excel: formula automatica per evidenziare prodotto scaduto Autore: gamma_ray |
Forum: Applicazioni Office Windows Risposte: 3 |
Salvare file excel in formato html escludendo le immagini Autore: systemcrack |
Forum: Applicazioni Office Windows Risposte: 10 |
formula excel non visualizza risultato Autore: tommasog |
Forum: Applicazioni Office Windows Risposte: 6 |
Excel 2016 - Funzione SCARTO + INDIRETTO Autore: pl1957 |
Forum: Applicazioni Office Windows Risposte: 2 |
Visitano il forum: Anthony47 e 122 ospiti