Condividi:        

[ Excel] Aiuto per macro

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

[ Excel] Aiuto per macro

Postdi freetime78 » 28/03/13 18:26

Buona sera
premetto che non sono pratico di excel.

Avrei un elenco ( di 90 righe )

In ogni riga ci sono 10 celle con altrettanti 10 valori numeici

Ora la macro deve scandagliare tutte le 90 righe e trovare quelle in cui si presentano celle con valori uguali consecutivi ( minimo 3)
Esempio

1- 0-1-1-1-2-1-3-0-0 ecc

2- 0-1-1-3-0-5-1-2-1-

3- 0-2-2-1-1-0-0-0-0

ecc
In questo esempio la macro deve dirmi ( evidenziandomelo con un colore) che la sequenza :

0-1-1 ( quindi come detto sopra almeno di 3 uguali consecutivi) e' presente sia in 1 che 2 ( visualizzandomli con lo stesso colore)

Cosa importante e' che questa condizione deve partire da sinistra a destra
Ossia la sequenza uguale deve partire da sinistra.
Se per esempio avessi 4 valori in comune ma al centro riga non deve restituirmi nulla perche' a me interessa solo i valori a partire da sinistra
Spero di essere stato chiaro

grazie
freetime78
Utente Junior
 
Post: 44
Iscritto il: 22/03/12 19:21

Sponsor
 

Re: [ Excel] Aiuto per macro

Postdi freetime78 » 28/03/13 18:29

Chiedo scusa
e' stata una mia svista.

Le celle che contengono valori( o,1,2,1, ecc) hanno ognuna una formula.
freetime78
Utente Junior
 
Post: 44
Iscritto il: 22/03/12 19:21

Re: [ Excel] Aiuto per macro

Postdi freetime78 » 28/03/13 18:44

freetime78
Utente Junior
 
Post: 44
Iscritto il: 22/03/12 19:21

Re: [ Excel] Aiuto per macro

Postdi Gigi_ » 28/03/13 22:03

Ciao,
ti interessa paragonare solo le tre celle iniziali di ogni riga?
Gigi_
win 7 + office 2003
Avatar utente
Gigi_
Utente Senior
 
Post: 344
Iscritto il: 14/11/09 21:51

Re: [ Excel] Aiuto per macro

Postdi Anthony47 » 28/03/13 23:46

Dando per scontato che il confronto va fatto solo sulle prime tre colonne e immaginando che i dati siano in A1:J90, penso che una macro come questa dovrebbe dare il risultato richiesto:
Codice: Seleziona tutto
Sub freetm()
Range("A1:J90").Interior.ColorIndex = xlNone
Dim myArr(1 To 90), I As Long, mySer As String, myPair, J As Long, myFl As Boolean
For I = 1 To 90
    myArr(I) = Cells(I, 1) & "_" & Cells(I, 2) & "_" & Cells(I, 3)
Next I
J = 2
For I = 1 To 90
mySer = Cells(I, 1) & "_" & Cells(I, 2) & "_" & Cells(I, 3)
myArr(I) = ""
reSrc:
DoEvents
myPair = Application.Match(mySer, myArr(), 0)
If Not IsError(myPair) Then
    Cells(I, 1).Resize(1, 10).Interior.ColorIndex = J
    Cells(myPair, 1).Resize(1, 10).Interior.ColorIndex = J
    myArr(myPair) = ""
    myFl = True
    GoTo reSrc
Else
    If myFl = True Then J = J + 1
    myFl = False
End If
Next I
End Sub

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

Re: [ Excel] Aiuto per macro

Postdi freetime78 » 29/03/13 05:16

cIAO E GRAZIE PER LE RISPOSTE.

nO NON E' CHE MI INTERESSA LE PRIME 3 ;

Se la funzione trova MINIMO i primi 3 uguali,li deve visualizzare,ma anche se ne trova 4 o 5 uguali,capito
Cioe' si parte da 3 val uguali in su.ma sempre da sinistra a destra
freetime78
Utente Junior
 
Post: 44
Iscritto il: 22/03/12 19:21

Re: [ Excel] Aiuto per macro

Postdi Anthony47 » 29/03/13 08:25

Prova e fai sapere.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [ Excel] Aiuto per macro

Postdi freetime78 » 29/03/13 14:38

Ciao Antony

ok funziona.
Posso sapere gentilmente quale parametro devo cambiare per poter visualizzare la 4^ ,5^ colonna ? ecc

grazie
freetime78
Utente Junior
 
Post: 44
Iscritto il: 22/03/12 19:21

Re: [ Excel] Aiuto per macro

Postdi Anthony47 » 29/03/13 19:28

Posso sapere gentilmente quale parametro devo cambiare per poter visualizzare la 4^ ,5^ colonna ?
I dati sono tutti al loro posto, la macro si limita a cercare le righe che hanno le prime tre colonne uguali e a colorarle con un colore diverso.
Intendi dire "come si fa a controllare non 3 ma 4, oppure 5, oppure x colonne"?

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

Re: [ Excel] Aiuto per macro

Postdi freetime78 » 29/03/13 20:21

Si Antony
freetime78
Utente Junior
 
Post: 44
Iscritto il: 22/03/12 19:21

Re: [ Excel] Aiuto per macro

Postdi Anthony47 » 31/03/13 01:14

A volte e' meglio dire le cose la prima volta...
Comunque volendo rendere parametrico il numero di celle da controllare ho variato il codice come segue:
Codice: Seleziona tutto
Sub freetm2()
myComp = 4       '<<< Il numero minimo di celle uguali
'
Range("A1:J90").Interior.ColorIndex = xlNone
Dim myArr(1 To 90), I As Long, mySer As String, myPair, J As Long, myFl As Boolean
For I = 1 To 90
    myArr(I) = myPipp(I, myComp)
Next I
J = 3    '***
For I = 1 To 90
mySer = myPipp(I, myComp)   'Cells(I, 1) & "_" & Cells(I, 2) & "_" & Cells(I, 3)
myArr(I) = ""
reSrc:
DoEvents
myPair = Application.Match(mySer, myArr(), 0)
If Not IsError(myPair) Then
    Cells(I, 1).Resize(1, 10).Interior.ColorIndex = J
    Cells(myPair, 1).Resize(1, 10).Interior.ColorIndex = J
    myArr(myPair) = ""
    myFl = True
    GoTo reSrc
Else
    If myFl = True Then J = J + 1
    myFl = False
End If
Next I
End Sub

Function myPipp(ByVal myI As Long, ByVal myLen As Long) As String
Dim II As Long, ScrStr As String
For II = 1 To myLen
    ScrStr = ScrStr & Cells(myI, II).Value & "_"
Next II
myPipp = ScrStr
End Function

Variare l' istruzione marcata <<<
Ho anche notato che l' indice di colore non deve partire da 2 (che corrisponde al bianco) ma da 3, quindi ho anche variato la riga marcata ***

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

Re: [ Excel] Aiuto per macro

Postdi freetime78 » 31/03/13 06:07

grazie Anthony47

buona Pasqua
freetime78
Utente Junior
 
Post: 44
Iscritto il: 22/03/12 19:21


Torna a Applicazioni Office Windows


Topic correlati a "[ Excel] Aiuto per macro":


Chi c’è in linea

Visitano il forum: Nessuno e 71 ospiti