Moderatori: Anthony47, Flash30005
Lucio Peruggini ha scritto:https://rapidshare.com/files/1810715656/Per_forum_PC_facile_excel_2003.xls
Grazie Avatar, non mi serve il file ma la macro da inserire nel mio foglio.
Ho allegato solamente 23334 righe che comprendono i numeri da 1 a 10.
Saluti
Avatar3 ha scritto:Ho letto metà del tuo post
penso di aver capito cosa ti occorre e credo sia fattibile
ma non mi chiedere di creare un file simile al tuo
sarebbe più opportuno che inviassi una parte di file (max 60.000 righe per via della mia versione excel che è 2003 )
Avatar3 ha scritto:E' tutto abbastanza chiaro
l'unico dato che non mi torna è quello della colonna L nel caso di 1 è pari a 87 che dovrebbe essere ripetuto più di 162 volte nella colonna B in caso di 1 della colonna A oppure in tutta la colonna B (indipendentemente dal numero in A)?
perché di 87 ne ho trovati solo 7 (con 1 in A)
Lucio Peruggini ha scritto:Se imposti i filtri sul foglio che ho inviato, selezioni il numero 1, in colonna "B" > di 162 avrai 87
Sub CompilaTab()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Range("I2:L91").ClearContents
UR = Range("A" & Rows.Count).End(xlUp).Row
Mriga = 0
MaxVal = 0
For RR = 2 To UR
Riga = Range("A" & RR).Value
Range("I" & Riga + 1).Value = Range("I" & Riga + 1).Value + 1
If MaxVal < Range("B" & RR).Value Then MaxVal = Range("B" & RR).Value
If Mriga <> Riga Then
If Riga > 1 Then
Range("J" & Riga).Value = MaxVal
Range("K" & Riga).Value = Round(MaxVal / 2 + 0.6)
End If
Mriga = Riga
MaxVal = 0
End If
Next RR
Range("J" & Riga + 1).Value = MaxVal
Range("K" & Riga + 1).Value = Round(MaxVal / 2 + 0.6)
UR = Range("I" & Rows.Count).End(xlUp).Row
RigaI = 1
RigaF = 0
For RR = 2 To UR
ContaN = 0
RigaI = RigaI + 1
RigaF = RigaF + Range("I" & RR).Value + 1
ValK = Range("K" & RR).Value
For RRV = RigaI To RigaF
If Range("B" & RRV).Value > ValK Then ContaN = ContaN + 1
Next RRV
RigaI = RigaF
Range("L" & RR).Value = ContaN
Next RR
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
CONTA.SE(A:A;H2)
MAX(B$2:B$300000*(A$2:A$300000=H2))
=SOMMA(--(((B$2:B$300000)*(A$2:A$300000=H2)*(B$2:B$300000>K2))>0))
=Int(K2/2)+1
Anthony47 ha scritto:Vedi la soluzione macro postata da Avatar sopra.
Se hai un pc abbastanza performante:
in I2 =
- Codice: Seleziona tutto
CONTA.SE(A:A;H2)
in J2 =da confermare con Contr-Maiusc-Enter;
- Codice: Seleziona tutto
MAX(B$2:B$300000*(A$2:A$300000=H2))
in L2Contr-Maiusc-Enter.
- Codice: Seleziona tutto
=SOMMA(--(((B$2:B$300000)*(A$2:A$300000=H2)*(B$2:B$300000>K2))>0))
Le due formule Contr-Maiusc-Enter sono quelle "esigenti" in termini di risorse.
Per K2 l' hai menata per le lunghe ; esempio:
1-la colonna “K” divide “J” x 2 (condizione: se la cifra finale di “J” è dispari, arrotondare in eccesso; se pari, aggiungere una unità)
2- esempio: 323 riportato in “J2” che, diviso 2 = 162 (arrotondato in eccesso) e riportato in colonna “K2”
3- Mentre per i dispari si arrotonda in eccesso, per i pari bisogna aggiungere una unità. supponiamo che il valore sia "300", deve diventare 301
Da tutto cio' la cosa piu' probabile e' che in K2 ti serve la formula
- Codice: Seleziona tutto
=Int(K2/2)+1
Se non e' cosi' allora devi menarla ancora una volta (almeno per me, e se la macro di Avatar non t' ha invece risolto tutto bene).
Poi copi I2:L2 verso il basso.
Ciao.
UR = Range("I" & Rows.Count).End(xlUp).Row
RigaI = 2
RigaF = 1
For RR = 2 To UR
ContaN = 0
RigaF = RigaF + Range("I" & RR).Value
ValK = Range("K" & RR).Value
For RRV = RigaI To RigaF
If Range("B" & RRV).Value > ValK Then ContaN = ContaN + 1
Next RRV
RigaI = RigaF + 1
Range("L" & RR).Value = ContaN
Next RR
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Ho collaudato le formule sul tuo foglio di lavoro, usando $30000 (e non $300000, uso 2003).Ciao Anthony, ho copiato e incollato le tue formule ma come risultato ottengo "0" in tutte le celle.
Anthony47 ha scritto:Ho collaudato le formule sul tuo foglio di lavoro, usando $30000 (e non $300000, uso 2003).Ciao Anthony, ho copiato e incollato le tue formule ma come risultato ottengo "0" in tutte le celle.
Do' per scontato che hai inserito il segno "uguale" nelle formule, quindi non rimane che formattare il PC... ( )
Alla prossima!
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: Nessuno e 73 ospiti