Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

frequenze da intervalli irregolari

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

frequenze da intervalli irregolari

Postdi papiriof » 24/03/15 16:12

Immagine
vorrei calcolare la frequenza di ciascun numero negli intervalli come da
immagine . Devo precisare che gli intervalli non sono tutti uguali cioè
possono essere di 2 , 3 4 ecc righe , ma hanno la caratteristica di avere sempre
5 colonne partono sempre dalla stessa colonna e fra un untervallo e il
successivo ci deve essere almeno una riga vuota.
Quello che vorrei è una macro che mi resttituisse 2 colonne nella 1^ col
il numero (da 1 a 90) nella 2^ col la frequenza quindi:

num freq
1 3
2 2
3 3
.. ..
13 4
.. ..
90 1
Win 7+Office 2007... ma preferisco convertire in Office 2003
papiriof
Utente Senior
 
Post: 152
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: frequenze da intervalli irregolari

Postdi papiriof » 24/03/15 16:14

Win 7+Office 2007... ma preferisco convertire in Office 2003
papiriof
Utente Senior
 
Post: 152
Iscritto il: 16/02/10 13:23

Re: frequenze da intervalli irregolari

Postdi wallace&gromit » 24/03/15 17:12

ma dalla descrizione mi sembra di capire che non fai distinzione tra i vari intervalli, a quel punto può funzionare anche una semplice funzione conta.se sul range (nel tuo esempio) B3:F20.
stato 2014: Office2003/2013 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 1421
Iscritto il: 16/01/12 14:21

Re: frequenze da intervalli irregolari

Postdi papiriof » 24/03/15 17:42

wallace&gromit ha scritto:ma dalla descrizione mi sembra di capire che non fai distinzione tra i vari intervalli, a quel punto può funzionare anche una semplice funzione conta.se sul range (nel tuo esempio) B3:F20.

No, no , forse mi sono espresso male, perchè cosi facendo otterrei che , nel caso specifico , il numero 13 me lo "conterebbe" 5 volte(in quanto nel primo intervallo è contenuto 2 volte) mentre proprio nell'esempio , non a caso, ho messo 4 quello che voglio ottenere , insomma non importa quante volte è in un intervallo ma se presente o meno.
Win 7+Office 2007... ma preferisco convertire in Office 2003
papiriof
Utente Senior
 
Post: 152
Iscritto il: 16/02/10 13:23

Re: frequenze da intervalli irregolari

Postdi ricky53 » 24/03/15 17:54

Ciao,
quindi per riepilogare: tu vorresti contare solo se il numero è presente nei vari intervalli e se è presente più di una volta va contato solo una volta.

DOMANDA: i dati reali sono proprio organizzati in questo modo?
A cosa servono gli intervalli separati da righe vuote?

Perchè non provi ad utilizzare una colonna di appoggio in cui scrivi un identificativo degli intervalli (Int-01, Int-02, ecc), eliminate le righe vuote e ... lavorandoci sopra
così potrai contare le volte che è presente utilizzando questa colonna come parte di chiave della ricerca?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: frequenze da intervalli irregolari

Postdi Anthony47 » 25/03/15 01:56

Ma vuoi la frequenza o il conteggio?
Per il conteggio potresti usare questo codice:
Codice: Seleziona tutto
Sub pacont()
Dim I As Long, LastB As Long, myI As Long, J As Long, myRan As Range
Dim myRes(1 To 90) As Long, Risult As String
'
Risult = "K2"           '<<< La cella da cui si cominceranno a scrivere i risultati
'
LastB = Cells(Rows.Count, 2).End(xlUp).Row
myI = 1
Do While myI <= LastB
    myI = cercapiena(myI, LastB)
    Set myRan = Range(Cells(myI, 2), Cells(myI, 2).End(xlDown)).Resize(, 5)
    For J = 1 To 90
        If Application.WorksheetFunction.CountIf(myRan, J) > 0 Then myRes(J) = myRes(J) + 1
    Next J
    myI = myI + myRan.Rows.Count
Loop
For J = 1 To 90
    Range(Risult).Offset(J - 1, 0) = J
    Range(Risult).Offset(J - 1, 1) = myRes(J)
Next J
'
End Sub

Function cercapiena(ByVal nRiga As Long, ByVal myMax As Long) As Long
Dim LI As Long
'
    For LI = 0 To myMax
        If Cells(nRiga + LI, 2) <> "" Then cercapiena = nRiga + LI: Exit Function
    Next LI
End Function

La riga marcata <<< va personalizzata con la cella di inizio per la scrittura dei risultati.
Poi attiva il foglio con i dati e manda in esecuzione la Sub pacont

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13895
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: frequenze da intervalli irregolari

Postdi papiriof » 25/03/15 09:00

Grazie Anthony47 era proprio quello che volevo , funziona perfettamente ho giusto cambiato "
LastB = Cells(Rows.Count, 2).End(xlUp).Row
con:
LastC = Cells(Rows.Count, 3).End(xlUp).Row
in quanto avevo una diversa disposizione la 1^ colonna era la C invece che la B.
Per rispondere a Riky ed ad altri curiosi dirò che si tratta di lotto ho un archivio piazzato nelle colonne S:W
con questa piccola macro sposto gli intervalli che seleziono e mi interessano per qualche ragione particolare 16 colonne a sx (C:G) :
Sub spostaSXX()
Selection.Cut Destination:=Selection.Offset(0, -16)'
End Sub
In questo modo pongo sotto la lente solo quelle estrazioni che voglio ,finita la ricerca seleziono gli intervalli ad uno ad uno e li rimetto nel posto di prima a formare l'archivio originale
Sub spostaDXX()
' spostaDX Macro
Selection.Cut Destination:=Selection.Offset(0, 16)
End Sub
Win 7+Office 2007... ma preferisco convertire in Office 2003
papiriof
Utente Senior
 
Post: 152
Iscritto il: 16/02/10 13:23


Torna a Applicazioni Office Windows


Topic correlati a "frequenze da intervalli irregolari":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti