Condividi:        

EXcel Trova numero e conta

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 Trova numero e conta

Postdi Statix » 18/05/10 14:43

Sembrava ok,
ma con alcuni numeri funziona e con altri no. :( :(
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Sponsor
 

Re: EXcel Trova numero e conta

Postdi Anthony47 » 18/05/10 14:44

Il blocco comincia con il 2
Quindi comincia da riga 20 verso riga 4 o da riga 20 verso riga 24 (come la macro considera)?

Con le modifiche fatte rischia di contarti un "J4" di troppo, se in riga 4 c' e' un numero della decina ma non il J4.

Se mi dici che la ricerca deve partire dal 5° J4 trovato e tornare indietro fino a riga 4 allora faccio gli aggiustamenti.

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

Re: EXcel Trova numero e conta

Postdi Statix » 18/05/10 14:49

la ricerca deve partire dal 5° J4 trovato e tornare indietro fino a riga 4
da come vedo funzionare la macro è così
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Anthony47 » 18/05/10 15:18

La macro originale comincia dall' ultimo J4 e si ferma al primo; quindi se il primo J4 si trova in riga 10 le righe 9:4 vengono ignorate.
Faro' una modifica per cominciare dall' ultimo e finire all' inizio dei dati.

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

Re: EXcel Trova numero e conta

Postdi Anthony47 » 19/05/10 01:15

Questo codice sostituisce sia Trova che Trova3
Codice: Seleziona tutto
    Option Base 0
    Public Urs, Vett(30, 11), Vr, ValN, NV As Integer
    Sub Trova()
    Urs = Worksheets("Foglio1").Range("C" & Rows.Count).End(xlUp).Row
    NV = Range("K4").Value
    Range("M4:V4").ClearContents
    Range("C4:G" & Urs).Interior.ColorIndex = 0 'ClearFormats
    ValN = Range("J4").Value
    Vr = 0
    For I = 0 To 30
    For J = 0 To 11
    Vett(I, J) = 0
    Next J
    Next I
    Vett(0, 0) = 4      '<<<<<<<<<<< AGG
    For RR = 4 To Urs
        For CC = 3 To 7
            If Cells(RR, CC).Value = ValN Then
           
            Cells(RR, CC).Interior.ColorIndex = 44
            Vr = Vr + 1
            Vett(Vr, 0) = RR
            If NV = Vr Then GoTo salta
            End If
        Next CC
    Next RR
salta:
    'Call Trova2
    'For I = 0 To Vr
    'MsgBox (Vett(I, 0))
    'Next I
    Call trova3
    End Sub

Codice: Seleziona tutto
    Sub trova3()
    FlTre = Application.WorksheetFunction.CountIf(Range("A4:G4"), Range("J4").Value)
    J4Vett = ([J4] - 1) Mod 10 + 1
    For I = [K4] To 1 Step -1           '<<<<<<<<<<<< MOD
        FlDue = 0
        For J = Vett(I, 0) - 1 To Vett(I - 1, 0) Step -1
        FlUno = 0
            For K = 4 To 0 Step -1
                For L = 0 To 9
                Cells(J, 3 + K).Select
                If Cells(J, 3 + K) = Cells(3, 13 + L) And Cells(J, 3 + K) <> [J4] Then
                  Cells(J, 3 + K).Interior.ColorIndex = 6
                  FlUno = 1: FlDue = 1
                  Vett(I, L + 1) = 1
                  'MsgBox (I & "-" & L + 1)
                End If
                Next L
            Next K
            If J = Vett(I - 1, 0) Then
            If FlUno > 0 Or FlDue = 0 Then
            Vett(I, J4Vett) = 1: End If
            End If
            If FlUno > 0 Then GoTo NextRng
        Next J
NextRng:
    Next I
If FlTre = 0 Then Vett(I + 1, J4Vett) = 0
    For L = 0 To 9
        For I = [K4] To 1 Step -1
            Cells(4, 13 + L) = Cells(4, 13 + L) + Vett(I, L + 1)
        Next I
    Next L
    End Sub

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

Re: EXcel Trova numero e conta

Postdi Statix » 23/05/10 22:46

Ciao Anthony,
volevo chiederti se era possibile fare una variazione alla macro postata sopra,
trovare e contare invece di una occorrenza 2 o 3.

Grazie ;) ;)
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Statix » 24/05/10 14:34

allego un foto esempio
Immagine
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Anthony47 » 24/05/10 14:35

Il problema originale prevedeva che "la ricerca deve partire dal 5° J4 trovato e tornare indietro fino a riga 4" e che si contava solo fino alla prima riga che conteneva un risultato valido
Adesso intendi dire che bisogna contare fino ad avere N risultati validi o N "righe" con risultati validi? L' immagine appena postata non chiarisce questo aspetto.

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

Re: EXcel Trova numero e conta

Postdi Statix » 24/05/10 14:45

Ciao Anthony,
dopo aver trovato il numero di partenza,successivamente deve trovare N°(2)modificabile anche3) righe con risultati validi,
l'ultima macro da te postata,trova il numero e successivamente trova la prima riga con risultati validi.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Anthony47 » 25/05/10 23:45

Avrei modificato la vecchia Trova3 con questa, che conta le occorrenze impostate in K5:
Codice: Seleziona tutto
        Sub trova3()
'Conta tante righe quanto in K5
        FlTre = Application.WorksheetFunction.CountIf(Range("A4:G4"), Range("J4").Value)
        J4Vett = ([J4] - 1) Mod 10 + 1
        For I = [K4] To 1 Step -1
        FlDue = 0:  FlUno = 0
            For J = Vett(I, 0) - 1 To Vett(I - 1, 0) Step -1
'            FlUno = 0
                For K = 4 To 0 Step -1
                    For L = 0 To 9
                    Cells(J, 3 + K).Select
                    If Cells(J, 3 + K) = Cells(3, 13 + L) And Cells(J, 3 + K) <> [J4] Then
                      Cells(J, 3 + K).Interior.ColorIndex = 6
                      FlUno = FlUno + 1: FlDue = 1
                      Vett(I, L + 1) = Vett(I, L + 1) + 1
                      'MsgBox (I & "-" & L + 1)
                    End If
                    Next L
                Next K
                If J = Vett(I - 1, 0) Then
                If FlUno > 0 Or FlDue = 0 Then
                Vett(I, J4Vett) = 1: End If
                End If
                If FlUno >= [K5] Then GoTo NextRng
            Next J
NextRng:
        Next I
    If FlTre = 0 Then Vett(I + 1, J4Vett) = 0
        For L = 0 To 9
            For I = [K4] To 1 Step -1
                Cells(4, 13 + L) = Cells(4, 13 + L) + Vett(I, L + 1)
            Next I
        Next L
If [K5] <= 0 Then MsgBox ("Valore K5 (n° di righe) impostato errato; risultati imprecisi")
Range("A1").Select
        End Sub

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

Re: EXcel Trova numero e conta

Postdi Statix » 26/05/10 00:00

Ciao Anthony,
da una prima occhiata sembra che vada tutto bene,domani ;) ;)
con calma faccio diverse verifiche per essere sicuro che non ci siano casi particolari.

sei un grande,ti ringrazio moltissimo.
Buonanotte.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Statix » 26/05/10 00:10

Ciao Anthony,
c'è qualcosa che non va,
la macro conta quante volte sono uscite le occorrenze,
se in K5 metto quattro,
se la decina è su diverse righe va bene,ne trova quattro e passa allla prossima,
ma se ne escono 2 su una riga e altri 2 su un altra,in realtà le occorrenze sono 2 e non 4,
la macro deve trovare i valori in quattro righe se imposto a 4,
e non 4 valori.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Statix » 26/05/10 00:30

ti allego un esempio,trova il 23 due volte e conta i valori della decina di appartenenza per quattro righe,
credo che questa volta non puoi rimproverarmi.

Ciao Anthony,
dopo aver trovato il numero di partenza,successivamente deve trovare N°(2)modificabile anche3) righe con risultati validi,
l'ultima macro da te postata,trova il numero e successivamente trova la prima riga con risultati validi.
Immagine
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Anthony47 » 26/05/10 00:47

Codice: Seleziona tutto
        Sub trova3()
'Conta tante righe quanto in K5
        FlTre = Application.WorksheetFunction.CountIf(Range("A4:G4"), Range("J4").Value)
        J4Vett = ([J4] - 1) Mod 10 + 1
        For I = [K4] To 1 Step -1
        FlDue = 0:  FlUno = 0
            For J = Vett(I, 0) - 1 To Vett(I - 1, 0) Step -1
            FlUnoUno = 0
                For K = 4 To 0 Step -1
                    For L = 0 To 9
                    Cells(J, 3 + K).Select
                    If Cells(J, 3 + K) = Cells(3, 13 + L) And Cells(J, 3 + K) <> [J4] Then
                      Cells(J, 3 + K).Interior.ColorIndex = 6
                      FlUnoUno = 1: FlDue = 1
                      Vett(I, L + 1) = Vett(I, L + 1) + 1
                      'MsgBox (I & "-" & L + 1)
                If FlUnoUno > 0 And FlUnoB = 0 Then FlUno = FlUno + 1: FlUnoB = 1
                    End If
                    Next L

                Next K
                FlUnoB = 0
                If J = Vett(I - 1, 0) Then
                If FlUnoUno > 0 Or FlDue = 0 Then
                Vett(I, J4Vett) = 1: End If
                End If
                If FlUno >= [K5] Then GoTo NextRng
            Next J
NextRng:
        Next I
    If FlTre = 0 Then Vett(I + 1, J4Vett) = 0
        For L = 0 To 9
            For I = [K4] To 1 Step -1
                Cells(4, 13 + L) = Cells(4, 13 + L) + Vett(I, L + 1)
            Next I
        Next L
If [K5] <= 0 Then MsgBox ("Valore K5 (n° di righe) impostato errato; risultati imprecisi")
Range("A1").Select
        End Sub

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

Re: EXcel Trova numero e conta

Postdi Statix » 26/05/10 00:58

Ciao Anthony,
va un pò meglio,ma c'è ancora un caso particolare,
se il numero che viene cercato e compreso nelle righe impostate non me lo conta,
la macro partendo dal numero di ricerca deve successivamente contare tutti i numeri compresi
nelle righe che imposto per la ricerca anche se è lo stesso numero di partenza,dopodichè ricominciare.

cosa che la vecchia macro faceva,parlo della macro che contava una sola occorrenza (1 riga),
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Statix » 26/05/10 16:13

Scusate se lo porto su,
non per darvi fretta o qualsivoglia,ma solo per ricordarvelo.
lo so che ogni cosa ha il suo tempo,
non vorrei che ve ne foste dimenticato. :oops: :oops:
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Statix » 31/05/10 08:24

Ciao a tutti,
riporto su questo post,
in attesa che Anthony o Flash30005 mi diano un aiuto,
la macro trova3 funziona ma non del tutto in quanto non conta i blocchi giusti,
in questo esempio deve trovare il numero 1 tre volte e contare i numeri della sua decina per 2 righe.
come esempio in foto
Immagine
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: EXcel Trova numero e conta

Postdi Anthony47 » 31/05/10 15:21

Prova con questa Trova33:
Codice: Seleziona tutto
   Sub Trova33()
'Conta per tante righe quanto in K5
        FlTre = Application.WorksheetFunction.CountIf(Range("A4:G4"), Range("J4").Value)
        J4Vett = ([J4] - 1) Mod 10 + 1
        FlDue = 0 '             N° righe con dati
       
        For I = [K4] To 1 Step -1
        FlDue = 0
            For J = Vett(I, 0) - 1 To 4 Step -1
            FlUno = 0
                For K = 4 To 0 Step -1
                    For L = 0 To 9
                    Cells(J, 3 + K).Select
                    If Cells(J, 3 + K) = Cells(3, 13 + L) Then
                      Cells(J, 3 + K).Interior.ColorIndex = 6
                      FlUno = 1 ': FlDue = 1
                      Vett(I, L + 1) = Vett(I, L + 1) + 1
                    End If
                    Next L

                Next K
                If FlUno > 0 Then FlDue = FlDue + 1
                If FlDue >= [K5] Then GoTo NextRng
            Next J
NextRng:
        Next I
    If FlTre = 0 Then Vett(I + 1, J4Vett) = 0
        For L = 0 To 9
            For I = [K4] To 1 Step -1
                Cells(4, 13 + L) = Cells(4, 13 + L) + Vett(I, L + 1)
            Next I
        Next L
If [K5] <= 0 Then MsgBox ("Valore K5 (n° di righe) impostato errato; risultati imprecisi")
Range("A1").Select
        End Sub

Ovviamente in Trova modificherai in Call Trova33
Dopo la macro i valori in J4 non saranno piu' Arancione, ma gialli; per rimetterli in Arancio devi esegiore una "Trova0", che (semplificando) ha lo stesso codice di Trova eccetto queste due righe:
Codice: Seleziona tutto
    Range("M4:V4").ClearContents
    Range("C4:G" & Urs).Interior.ColorIndex = 0 'ClearFormats

Quindi dopo Call Trova33 inserirai anche un Call Trova0

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

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "EXcel Trova numero e conta":


Chi c’è in linea

Visitano il forum: Marius44 e 37 ospiti