Condividi:        

Distinguere date ripetitive

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

Distinguere date ripetitive

Postdi Alessandro999 » 24/03/10 18:01

Salve a tutti gli utenti del forum e ai preparatissimi moderatori complimenti !!!

Leggendo il forum ho cercato tramite cerca se trovavo qualche formula che andava bene al mio problema , ma per mia incompetenza non sono riuscito a trovarla.

Ho un piccolo problema che non riesco a risolvere , posto subito un' immagine

Immagine

Immagine

come si vede è una griglia che va da cella c3 a c32 e sono 12 colonne c,d,e,f,g,h,i,J,K,l,m,n

la scritta vuota appare quando sulla colonna giallla ci sono celle vuote , la semplice formula è visibile sulla barra delle formule

sull' elenco dell' immagine tramite la formattazione condizionale ho evidenziato le date che risultano più di una volta.

il problema è che diverse date tendono a ripetersi e io avrei bisogno che excel le colorasse con colori diversi.

per esempio se la data 23/04/2009 si ripete 4 volte avrei bisogno che excel assegnasse a queste date un colore , diciamo il verde , poi nel caso si ripetesse un' altra data per esempio 08/10/2009 diciamo 2 volte , excel dovrebbe colorare queste date con un colore diverso di quello usato precedentemente.

via dicendo così per le altre serie di date tutte uguali che si ripetono.

non importa i colori che excel sceglie , basta che ci sia una differenza cromatica in grado di distinguere a colpo d'occhio le date che appartengono allo stesso gruppo senza perdere una marea di tempo.

come vedete ho evidenziato alcune date che si ripetono con un circoletto per dare un' idea .

questo mi permetterebbe anche di vedere immediatamente le date che si presentano di più con veloce conteggio visuale delle celle che hanno lo stesso colore.


grazie per un eventuale risposta :)
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Sponsor
 

Re: Distinguere date ripetitive

Postdi Anthony47 » 25/03/10 02:14

Mah.. secondo me se hai piu' di una decina di colori l' occhio si perdera' senza apprezzare granche'.
Comunque puoi provare questa macro:
Codice: Seleziona tutto
Sub ChColor()
Dim CheckArea As String, ColInd As Integer
'
CheckArea = "C3:N32"
TestCell = "C2"
'
ColIndex=2
Range(CheckArea).Interior.Color = Range(TestCell).Interior.Color
For Each Cell In Range(CheckArea)
If Application.WorksheetFunction.CountIf(Range(CheckArea), Cell.Value) > 1 _
And Cell.Interior.Color = Range(TestCell).Interior.Color Then
ColInd = ColInd + 1
Cell.Interior.ColorIndex = ColInd
LFor = Cell.Text
'==
With Range(CheckArea)
    Set c = .Find(LFor, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
If c.Interior.Color = Range(TestCell).Interior.Color Then
c.Interior.ColorIndex = ColInd

End If
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
'==
End If
Next Cell
End Sub

Essa prima assegna a tutta l' area CheckArea (C2:N32) il colore della TestCell (ho usato C2), poi assegna un colorindex diverso a ogni gruppo di celle uguali.

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

Re: Distinguere date ripetitive

Postdi Flash30005 » 25/03/10 03:19

Anthony mi ha preceduto
ma, oramai, a lavoro svolto, lo pubblico
Codice: Seleziona tutto
Public Conta, Conta1, RR, CC, RR2, CC2 As Integer, D1, D2 As Long
Sub Colora()
    Range("C3:N32").Interior.ColorIndex = xlNone
    For RR = 3 To 32
        For CC = 3 To 14
        Conta = 0
        If Cells(RR, CC).Interior.ColorIndex <> xlNone Then GoTo salta
            D1 = Cells(RR, CC).Value
            For RR2 = 3 To 32
                For CC2 = 3 To 14
                If Cells(RR2, CC2).Value = "vuota" Then GoTo salta
                    If RR = RR2 And CC = CC2 Or Cells(RR2, CC2).Interior.ColorIndex <> xlNone Then GoTo salta
                        D2 = Cells(RR2, CC2).Value
                        If D1 = D2 Then Conta = Conta + 1
salta:
                Next CC2
            Next RR2
            If Conta > 0 Then
            If Conta = 1 Then Conta1 = Conta1 + 1
                Call Evidenzia
            End If
        Next CC
    Next RR
End Sub
Sub Evidenzia()
Dim Colore(30) As Integer
Colore(1) = 4
Colore(2) = 6
Colore(3) = 7
Colore(4) = 8
Colore(5) = 10
Colore(6) = 12
Colore(7) = 14
Colore(8) = 15
Colore(9) = 17
Colore(10) = 18
Colore(11) = 22
Colore(12) = 23
Colore(13) = 24
Colore(14) = 26
Colore(15) = 31
Colore(16) = 33
Colore(17) = 34
Colore(18) = 35
Colore(19) = 38
Colore(20) = 40
Colore(21) = 41
Colore(22) = 43
Colore(23) = 45
Colore(24) = 46
Colore(25) = 47
Colore(26) = 48
Colore(27) = 50
Colore(28) = 53
Colore(29) = 54
Colore(30) = 44
Conta1 = Conta1 Mod 30 + 1
    For RE = 3 To 32
        For CE = 3 To 14
            If D1 = Cells(RE, CE).Value Then
                If Conta = 1 Then
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta1)
                Else
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta * 4)
                End If
            End If
        Next CE
    Next RE
End Sub

Questa serie di colori li avevo scelti tempo fa per un altro lavoro e servivano per non confondere il font con il fondo

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Distinguere date ripetitive

Postdi Alessandro999 » 25/03/10 18:11

ciao anthony , la tua macro è velocissima .

Ho riscontrato un paio di problemi , il primo che non colora con lo stesso colore le date uguali e il secondo è un errore di run-time '9' che dice : indice non incluso nell'intervallo

il debug mostra la riga seguente :

Cell.Interior.ColorIndex = ColInd

Immagine
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Alessandro999 » 25/03/10 18:20

Grazie , siete mitici , ho provato entrambe le macro.

Al momento sto utilizzando la tua Flash, e funziona bene.

ho solo un problemino che ora ti spiego :

Quando la macro vede delle date tutte uguali le colora giustamente con lo stesso colore e fin qui tutto bene , il problemino è che poi in certi casi tende a riutilizzare lo stesso colore per altri gruppi di date che si ripetono , nell'immagine allegata puoi vedere che usa il giallo per tre gruppi di date.

é possibile inserire un comando nella macro che dica che un colore venga utilizzato una volta sola , e non riutilizzato per evidenziare altri gruppi di dati ?

Immagine

( ovviamente so che i colori non sono molti )

grazie per l'aiuto
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Flash30005 » 25/03/10 21:52

No non è così
colora di uguale colore quando ha i gruppi uguali es. se si ripetono tre volte avranno lo stesso colore come se si ripetono 4 volte (mi sembra che la tua richiesta fosse questa), mentre, avendo notato che si ripetono spesso date solo due volte ho fatto in maniera tale che si differenziassero come colore ma a volte può assumere un colore di un altro gruppo.
se segui la logica della macro ti accorgeresti di questo.
Potresti fare una modifica affinché non avrai mai i gruppi di due sole ripetizioni che si confondano con i gruppi di più ripetizioni modificando queste due righe di codice
Codice: Seleziona tutto
Conta1 = Conta1 Mod 30 + 1 '<<<< modifica

così
Codice: Seleziona tutto
Conta1 = Conta1 Mod 8 + 1

e quesa riga di codice
Codice: Seleziona tutto
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta * 4) '<<<< modifica

così
Codice: Seleziona tutto
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta * 5)


Spiego:
Conta1 conta solo quando hai una sola ripetizione e somma sempre 1 cambiando colore da 1 a 8 (dedichiamo solo 8 colori a questa combinazione
Conta invece è quando hai gruppi superiori a due date uguali, in questo caso moltiplica la variabile "Conta" per 5 quindi quando ci saranno date ripetute 3 volte avrai il colore 15 (del vettore Colore(15) = al colore 31)
con gruppi di 4 ripetizioni avrai 20 = colore 40 etc etc
Oppure (soluzione migliore, a mio avviso)
modifichi il Conta1 così
Codice: Seleziona tutto
ContaC = Conta1 + 8
Conta C = ContaC Mod 30 + 9

e contemporaneamente
Codice: Seleziona tutto
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta)

In qeusto ultimo caso, supponendo che Conta non superi 9 date uguali avrai combinazioni con gruppi da 3 date uguali a gruppi di 9 date uguali quindi il vettore Colore(n) varierà da 3 a 9
mentre il Conta1 sarà da 9 a 30 e non si accavalleranno con i gruppi con più date uguali

Prova e fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Distinguere date ripetitive

Postdi Anthony47 » 26/03/10 00:40

Se la mia macro va in errore e' perche' hai usato gia' tutti i "Color Index" disponibili che fino a xl2003 sono 56; ma se e' cosi' allora la l' idea di apprezzare a occhio quali date sono ripetute mi sembra una pretesa che il tuo occhio non apprezzera'.

Per i colori errati, intendi che date uguali hanno colori diversi, o che date diverse hanno colore uguale?

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

Re: Distinguere date ripetitive

Postdi Alessandro999 » 26/03/10 14:31

Flash30005 ha scritto:No non è così
colora di uguale colore quando ha i gruppi uguali es. se si ripetono tre volte avranno lo stesso colore come se si ripetono 4 volte (mi sembra che la tua richiesta fosse questa), mentre, avendo notato che si ripetono spesso date solo due volte ho fatto in maniera tale che si differenziassero come colore ma a volte può assumere un colore di un altro gruppo.
se segui la logica della macro ti accorgeresti di questo.
Potresti fare una modifica affinché non avrai mai i gruppi di due sole ripetizioni che si confondano con i gruppi di più ripetizioni modificando queste due righe di codice
Codice: Seleziona tutto
Conta1 = Conta1 Mod 30 + 1 '<<<< modifica

così
Codice: Seleziona tutto
Conta1 = Conta1 Mod 8 + 1

e quesa riga di codice
Codice: Seleziona tutto
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta * 4) '<<<< modifica

così
Codice: Seleziona tutto
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta * 5)


Spiego:
Conta1 conta solo quando hai una sola ripetizione e somma sempre 1 cambiando colore da 1 a 8 (dedichiamo solo 8 colori a questa combinazione
Conta invece è quando hai gruppi superiori a due date uguali, in questo caso moltiplica la variabile "Conta" per 5 quindi quando ci saranno date ripetute 3 volte avrai il colore 15 (del vettore Colore(15) = al colore 31)
con gruppi di 4 ripetizioni avrai 20 = colore 40 etc etc
Oppure (soluzione migliore, a mio avviso)
modifichi il Conta1 così
Codice: Seleziona tutto
ContaC = Conta1 + 8
Conta C = ContaC Mod 30 + 9

e contemporaneamente
Codice: Seleziona tutto
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta)

In qeusto ultimo caso, supponendo che Conta non superi 9 date uguali avrai combinazioni con gruppi da 3 date uguali a gruppi di 9 date uguali quindi il vettore Colore(n) varierà da 3 a 9
mentre il Conta1 sarà da 9 a 30 e non si accavalleranno con i gruppi con più date uguali

Prova e fai sapere
Ciao



OK Flash , ho provato entrambe le soluzioni e come dici l'ultima mi sembra la migliore , servirebbe solo una piccola integrazione per ottimizzarne l'efficacia.

ecco cosa intendo

prova a guardare l'mmagine , per testarla ho utilizzato una data ripetuta tre volte in colonna A solo a titolo di test.

come vedi mette subito in evidenza che la data 07/12/2011 si è ripetuta 5 volte , si vede benissimo poichè la macro ha assegnato il colore rosa solo alla combinazione di date più volte presente.

il celeste è assegnato solo a date ripetute quattro volte e via dicendo per gli altri colori.

l'unico problema è che scendendo di grado , per esempio le date che si ripetono 2 volte sono tutte verdi e quindi mischiate.

per eliminare incomprensioni faccio un esempio :

Prova a osservare la data 09/03/2012 colorata in verde in E16 , se provi a trovare l'altra data gemella che compone la coppia ,non è proprio immediato ( l'altra si trova in K11 ).

ora ti spiego a cosa dovrebbe servire la macro , in pratica dovrebbe servire a identificare al volo a quale dei numeri nella riga 1 corrispondono le date che si presentano più volte.

ad esempio la coppia 09/03/2012 (E16) e 09/03/2012 in (K11) , corrispondono a 91giorni (E1) e a 272 giorni (K1).

ora potendo vedere quali sono le date che si ripetono grazie alla tua macro , sarebbe possibile potenziarla per avere la massima definizione e velocità di identificazione.

l'idea :idea: per aggirare il problema sarebbe che tramite un secondo step ....

Sarebbe possibile dedicare una cella del foglio di lavoro ad esempio B35 dove si potrebbe inserire la data individuata tramite il primo passaggio , e quindi rimangono colorate solo le celle che contengono quella data.

ad esempio prendiamo sempre il 09/03/2012 (E16 in verde) , inserendo quella data in B35 (cella apposita ) rimarrebbero colorate solo le celle che contengono quella data dando la possibilità di individuarle tutte subito senza perdere tempo a cercare dove si trovano .


mi spiego meglio : una sorta di comando del tipo trova e colora la data specificata , dove vengono colorate solo le date corrispondenti a quanti introdotto nella cella B35

Non ho idea di come fare , ho guardato i vostri post precedenti m
a non riesco a trovare una risposta , o meglio voi vi muovete ad anni luce e non riesco a capire io :cry:


Immagine

Immagine

queste sono le modifiche che ho apportato alla macro secondo le tue indicazioni :


Codice: Seleziona tutto
Public Conta, Conta1, RR, CC, RR2, CC2 As Integer, D1, D2 As Long
    Sub Colora()
        Range("C3:N32").Interior.ColorIndex = xlNone
        For RR = 3 To 32
            For CC = 3 To 14
            Conta = 0
            If Cells(RR, CC).Interior.ColorIndex <> xlNone Then GoTo salta
                D1 = Cells(RR, CC).Value
                For RR2 = 3 To 32
                    For CC2 = 3 To 14
                    If Cells(RR2, CC2).Value = "vuota" Then GoTo salta
                        If RR = RR2 And CC = CC2 Or Cells(RR2, CC2).Interior.ColorIndex <> xlNone Then GoTo salta
                            D2 = Cells(RR2, CC2).Value
                            If D1 = D2 Then Conta = Conta + 1
salta:
                    Next CC2
                Next RR2
                If Conta > 0 Then
                If Conta = 1 Then Conta1 = Conta1 + 1
                    Call Evidenzia
                End If
            Next CC
        Next RR
    End Sub
    Sub Evidenzia()
    Dim Colore(30) As Integer
    Colore(1) = 4
    Colore(2) = 6
    Colore(3) = 7
    Colore(4) = 8
    Colore(5) = 10
    Colore(6) = 12
    Colore(7) = 14
    Colore(8) = 15
    Colore(9) = 17
    Colore(10) = 18
    Colore(11) = 22
    Colore(12) = 23
    Colore(13) = 24
    Colore(14) = 26
    Colore(15) = 31
    Colore(16) = 33
    Colore(17) = 34
    Colore(18) = 35
    Colore(19) = 38
    Colore(20) = 40
    Colore(21) = 41
    Colore(22) = 43
    Colore(23) = 45
    Colore(24) = 46
    Colore(25) = 47
    Colore(26) = 48
    Colore(27) = 50
    Colore(28) = 53
    Colore(29) = 54
    Colore(30) = 44
    ContaC = Conta1 + 8
    ContaC = ContaC Mod 30 + 9
        For RE = 3 To 32
            For CE = 3 To 14
                If D1 = Cells(RE, CE).Value Then
                    If Conta = 1 Then
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta)
                    Else
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta * 4)
                    End If
                End If
            Next CE
        Next RE
    End Sub



ciao : )
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Alessandro999 » 26/03/10 14:41

Anthony47 ha scritto:Se la mia macro va in errore e' perche' hai usato gia' tutti i "Color Index" disponibili che fino a xl2003 sono 56; ma se e' cosi' allora la l' idea di apprezzare a occhio quali date sono ripetute mi sembra una pretesa che il tuo occhio non apprezzera'.

Per i colori errati, intendi che date uguali hanno colori diversi, o che date diverse hanno colore uguale?

Ciao.


Hai ragione Anthony , ho cercato di rendere la soluzione il più semplice possibile per riuscire a spiegare bene io quello che intendevo , .....so che voi potete fare quello che volete con il vba.

riguardo ai colori intendevo che date uguali hanno colori diversi.

ovviamente mi sono espresso male io in precedenza.


ciao e davvero complimenti per quello che fate , ...............magari avere la competenza che avete voi :roll:
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Flash30005 » 26/03/10 15:37

Sorry!!!
La fretta...
La macro è stata studiata proprio per non avere le date che si ripetono una solo volta tutte dello stesso colore
e mi sembrva strano che venissero tutte celle verdi infatti...
Ho errato il codice di questa riga
Codice: Seleziona tutto
                    If Conta = 1 Then
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta) '<<<< da modificare
                    Else
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta * 4) '<<< questa io non l'ho prevista


Codice: Seleziona tutto
                    If Conta = 1 Then
                        Cells(RE, CE).Interior.ColorIndex = Colore(ContaC)  '<<<<<  Codice corretto                   
Else
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta)  '<<<< corretto come originale

la variabile deve essere "ContaC" e non "Conta" altrimenti si colorano tutte di verde

Per quanto riguarda il cercare una specifica data e colorare le celle che hanno lo stesso valore non occorre fare la macro precedente e poi questo secondo step ma puoi fare direttamente questo step

oppure (ancora meglio, credo)

Avendo modificato la macro come postato qui avrai date (2 ripetizioni) diverse una dall'altra, a questo punto, si potrebbe fare in questa maniera:
inserisci la data in B5 (fondo neutro) e dopo la macro (secondo step) avrai la cella B5 dello stesso solore della data corrispondente nella tabella.
Cosa ne pensi?
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Distinguere date ripetitive

Postdi Alessandro999 » 26/03/10 17:23

Flash30005 ha scritto:Sorry!!!
La fretta...
La macro è stata studiata proprio per non avere le date che si ripetono una solo volta tutte dello stesso colore
e mi sembrva strano che venissero tutte celle verdi infatti...
Ho errato il codice di questa riga
Codice: Seleziona tutto
                    If Conta = 1 Then
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta) '<<<< da modificare
                    Else
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta * 4) '<<< questa io non l'ho prevista


Codice: Seleziona tutto
                    If Conta = 1 Then
                        Cells(RE, CE).Interior.ColorIndex = Colore(ContaC)  '<<<<<  Codice corretto                   
Else
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta)  '<<<< corretto come originale

la variabile deve essere "ContaC" e non "Conta" altrimenti si colorano tutte di verde

Per quanto riguarda il cercare una specifica data e colorare le celle che hanno lo stesso valore non occorre fare la macro precedente e poi questo secondo step ma puoi fare direttamente questo step

oppure (ancora meglio, credo)

Avendo modificato la macro come postato qui avrai date (2 ripetizioni) diverse una dall'altra, a questo punto, si potrebbe fare in questa maniera:
inserisci la data in B5 (fondo neutro) e dopo la macro (secondo step) avrai la cella B5 dello stesso solore della data corrispondente nella tabella.
Cosa ne pensi?
ciao



OK Flash

ho sostituito le righe di codice

ora la macro è questa spero di aver capito ed eseguito bene gli ordini.


al momento è subentrato un' inconveniente , lo eleno sotto la macro.........


Codice: Seleziona tutto
Public Conta, Conta1, RR, CC, RR2, CC2 As Integer, D1, D2 As Long
    Sub Colora()
        Range("C3:N32").Interior.ColorIndex = xlNone
        For RR = 3 To 32
            For CC = 3 To 14
            Conta = 0
            If Cells(RR, CC).Interior.ColorIndex <> xlNone Then GoTo salta
                D1 = Cells(RR, CC).Value
                For RR2 = 3 To 32
                    For CC2 = 3 To 14
                    If Cells(RR2, CC2).Value = "vuota" Then GoTo salta
                        If RR = RR2 And CC = CC2 Or Cells(RR2, CC2).Interior.ColorIndex <> xlNone Then GoTo salta
                            D2 = Cells(RR2, CC2).Value
                            If D1 = D2 Then Conta = Conta + 1
salta:
                    Next CC2
                Next RR2
                If Conta > 0 Then
                If Conta = 1 Then Conta1 = Conta1 + 1
                    Call Evidenzia
                End If
            Next CC
        Next RR
    End Sub
    Sub Evidenzia()
    Dim Colore(30) As Integer
    Colore(1) = 4
    Colore(2) = 6
    Colore(3) = 7
    Colore(4) = 8
    Colore(5) = 10
    Colore(6) = 12
    Colore(7) = 14
    Colore(8) = 15
    Colore(9) = 17
    Colore(10) = 18
    Colore(11) = 22
    Colore(12) = 23
    Colore(13) = 24
    Colore(14) = 26
    Colore(15) = 31
    Colore(16) = 33
    Colore(17) = 34
    Colore(18) = 35
    Colore(19) = 38
    Colore(20) = 40
    Colore(21) = 41
    Colore(22) = 43
    Colore(23) = 45
    Colore(24) = 46
    Colore(25) = 47
    Colore(26) = 48
    Colore(27) = 50
    Colore(28) = 53
    Colore(29) = 54
    Colore(30) = 44
    ContaC = Conta1 + 8
    ContaC = ContaC Mod 30 + 9
        For RE = 3 To 32
            For CE = 3 To 14
                If D1 = Cells(RE, CE).Value Then
                    If Conta = 1 Then
                        Cells(RE, CE).Interior.ColorIndex = Colore(ContaC) '<<<<< Codice corretto
                    Else
                        Cells(RE, CE).Interior.ColorIndex = Colore(Conta)  '<<<<< corretto come originale
                    End If
                End If
            Next CE
        Next RE
    End Sub




Errore di run-time 9

indice non incluso nell' intervallo



il debug mostra quanto segue :

Immagine

Immagine


nella mia ignoranza in materia mi allaccio a quello che diceva Anthony in un post precedente , ossia che sia un possibile problema di esaurimento di colori ? :undecided: , è possibile che sia questo ?

io uso excell 2007 Anthony mi ha spiegato che nel 2003 sono 56 colori , nel 2007 " nin so' "

scusami se sparo castronerie.



L'idea sul finale del tuo messaggio mi piace molto e la trovo geniale , una volta inserito la data in una cella specifica questa si colora dello stesso colore assegnato a quelle date nella griglia.

attendo istruzioni .............

come vedi sull' immagine la data del 07/12/ 2011 compare 3 volte e le celle sono colorate in giallo ( poi il giallo non viene più usato , praticamente quello che intendevo ) le altre conbinazioni di 2 si notano subito perchè hanno un colore identificativo diverso per esempio 29/03/2011 color lilla colonna K e C e poi giustamente quel colore non viene più usato altrimenti si mischierebbero coppie diverse con lo stesso colore , come il post precedente dove tutte le coppie erano in verde creando confusione.

: )
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Flash30005 » 28/03/10 10:00

Quando ho postato la variazione non avevo la possibilità di verificare la macro e l'errore era dovuto ad un fuori range del Vettore Colore oltre 30
la modifica effettiva è questa (per evitare ulteriori errori pubblico l'intera macro Colora e Evidenzia)
Codice: Seleziona tutto
Public Conta, Conta1, RR, CC, RR2, CC2 As Integer, D1, D2 As Long
Sub Colora()
Conta1 = 0
    Range("C3:N32").Interior.ColorIndex = xlNone
    For RR = 3 To 32
        For CC = 3 To 14
        Conta = 0
        If Cells(RR, CC).Interior.ColorIndex <> xlNone Then GoTo salta
            D1 = Cells(RR, CC).Value
            For RR2 = 3 To 32
                For CC2 = 3 To 14
                If Cells(RR2, CC2).Value = "vuota" Then GoTo salta
                    If RR = RR2 And CC = CC2 Or Cells(RR2, CC2).Interior.ColorIndex <> xlNone Then GoTo salta
                        D2 = Cells(RR2, CC2).Value
                        If D1 = D2 Then Conta = Conta + 1
salta:
                Next CC2
            Next RR2
            If Conta > 0 Then
            If Conta = 1 Then Conta1 = Conta1 + 1
                Call Evidenzia
            End If
        Next CC
    Next RR
End Sub
Sub Evidenzia()
Dim Colore(30) As Integer
Colore(1) = 4
Colore(2) = 6
Colore(3) = 7
Colore(4) = 8
Colore(5) = 10
Colore(6) = 12
Colore(7) = 14
Colore(8) = 15
Colore(9) = 17
Colore(10) = 18
Colore(11) = 22
Colore(12) = 23
Colore(13) = 24
Colore(14) = 26
Colore(15) = 31
Colore(16) = 33
Colore(17) = 34
Colore(18) = 35
Colore(19) = 38
Colore(20) = 40
Colore(21) = 41
Colore(22) = 43
Colore(23) = 45
Colore(24) = 46
Colore(25) = 47
Colore(26) = 48
Colore(27) = 50
Colore(28) = 53
Colore(29) = 54
Colore(30) = 44
ContaC = Conta1 + 8
ContaC = ContaC Mod 30
If ContaC = 0 Then ContaC = 9
    For RE = 3 To 32
        For CE = 3 To 14
            If D1 = Cells(RE, CE).Value Then
                If Conta = 1 Then
                    Cells(RE, CE).Interior.ColorIndex = Colore(ContaC)
                Else
                    Cells(RE, CE).Interior.ColorIndex = Colore(Conta)
                End If
            End If
        Next CE
    Next RE
End Sub

Puoi aggiungere questa nuova macro
Codice: Seleziona tutto
Sub Trovadata()
DataB = Range("B35").Value
    For RR = 3 To 32
        For CC = 3 To 14
            D1 = Cells(RR, CC).Value
            If D1 = DataB Then
            Cells(RR, CC).Copy
            Range("B35").PasteSpecial Paste:=xlPasteFormats
            GoTo esci
            End If
        Next CC
    Next RR
MsgBox "Non ci sono date uguali", vbInformation
Range("B35").Interior.ColorIndex = xlNone
Range("B35").Font.ColorIndex = 3
esci:
 Application.CutCopyMode = False
End Sub


e questo codice nel foglio1 (non nel modulo)
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$35" Then Exit Sub
   Application.EnableEvents = False
Call Trovadata
   Application.EnableEvents = True
End Sub


In caso di problemi scarica questo file ;)

Ciao


Nota: modificato post ore 18:30 - Versione file N.3
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Distinguere date ripetitive

Postdi Alessandro999 » 30/03/10 09:42

Grazie Flash ho provato il tuo file excel scaricato da rapidshare e ovviamente funziona alla perfezione.

ho provato anche l'altra soluzione riportando da solo le modifiche incluse sul foglio 1 tramite vba project ,click destro ,visualizza codice e introducendo le istruzioni spiegate impostando worksheet e SelectionChange , per vedere se c'è la facevo e ho visto che funziona. :)

al momento ho costruito un foglio apposito grazie alle tue varie macro.


grazie Flash ,un saluto anche ad Anthony.

Immagine

:D :D :D :D :D :D :D :D :D :D
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Alessandro999 » 31/03/10 13:42

Codice: Seleziona tutto
Sub intercetta()

a = Range("c50")

Cells.Find(What:=a, after:=ActiveCell, MatchCase:=True).Activate


ActiveCell.Interior.ColorIndex = 27

End Sub


Ciao , nel foglio di lavoro ho aggiunto anche questo codice , colora in giallo le date corrispondenti alla data contenuta in cella c50.


è possibile escludere dal monitoraggio esclusivamente la cella c35 , o meglio che istruzione devo aggiungere per ottenere ciò ?

( in pratica non la deve colorare di giallo )

grazie mille per l' eventuale risposta. :oops:

( sto leggendo excel macro di Paolo Guccini dell' Apogeo ma a prima vista mi sembra troppo riduttivo :neutral: ......se qualcuno vuol suggerirmi qualcosa di buono thanks )
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Flash30005 » 31/03/10 18:09

Prova questa macro

Codice: Seleziona tutto
Sub intercetta()
Range("c50").Interior.ColorIndex = 27
a = Range("c50")
       With Worksheets("Foglio1").Range("C3:N32")
            Set D = .Find(a, LookIn:=xlValues)
            If Not D Is Nothing Then
                firstDAddress = D.Address
                Do
                    D.Interior.ColorIndex = 27
                    Set D = .FindNext(D)
                    On Error Resume Next
                Loop While Not D Is Nothing And D.Address <> firstDAddress
                    On Error GoTo 0
            End If
        End With
End Sub


Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Distinguere date ripetitive

Postdi Alessandro999 » 01/04/10 09:12

Flash30005 ha scritto:Prova questa macro

Codice: Seleziona tutto
Sub intercetta()
Range("c50").Interior.ColorIndex = 27
a = Range("c50")
       With Worksheets("Foglio1").Range("C3:N32")
            Set D = .Find(a, LookIn:=xlValues)
            If Not D Is Nothing Then
                firstDAddress = D.Address
                Do
                    D.Interior.ColorIndex = 27
                    Set D = .FindNext(D)
                    On Error Resume Next
                Loop While Not D Is Nothing And D.Address <> firstDAddress
                    On Error GoTo 0
            End If
        End With
End Sub


Fai sapere
Ciao



Innanzitutto Grazie Flash per la tua celere risposta e per la disponibilità .

ho inserito la macro tale e quale a quella che hai postato e al momento mi restituisce un errore di runtime eprecisamente :

Errore di run-time "9"
indice non incluso nell' intervallo

poi ho controllato la macro per vedere se era solo un problema di foglio errato o range e ho apportato le seguenti modifiche " foglio 2 e range di controllo da c56 a n85 " ma purtroppo il risultato non cambia restituisce sempre lo stesso errore di run-time 9

Immagine

sull' immagine seguente ti mostro l'evoluzione del foglio di lavoro : la griglia con le date che vedi è un riversamento della prima che è sovrastante e non visibile per motivi di spazio dell' immagine.

Immagine

come vedi il range di ricerca dovrebbe limitarsi a c56 fino a n85 , snobbando le altre celle. :) :) :) :) :) :) , Grazie mille per una tua eventuale risposta !!!
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Flash30005 » 01/04/10 10:25

Chiaramente il nome del foglio della macro deve corrispondere al nome del tuo foglio nel quale hai le date
e il range C53 e N85 corripondere al range delle date da colorare
la macro ti assicuro che funziona se impostata così,
altrimenti inviami il foglio con il quale potrò fare le dovute prove

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Distinguere date ripetitive

Postdi Alessandro999 » 01/04/10 10:52

Flash30005 ha scritto:Chiaramente il nome del foglio della macro deve corrispondere al nome del tuo foglio nel quale hai le date
e il range C53 e N85 corripondere al range delle date da colorare
la macro ti assicuro che funziona se impostata così,
altrimenti inviami il foglio con il quale potrò fare le dovute prove

ciao


Ciao Flash , ho provveduto a ricontrollare ed effettivamente hai come al solito ragione e non poteva essere altrimenti.

avevo messo il range giusto e specificato il foglio da monitorare come specificato in precedenza , il problema molto banale derivato dalla mia incompetenza era semplicemente che il foglio2 lo avevo ridenominato con un' altra etichettatura sulla linguetta e sulla macro lo dichiarato molto stupidamente foglio2 , mi sento un fesso :oops:

Grazie ancora una volta Flash !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!



per quanto dici riguardo all' invio dei fogli , non so a che indirizzo li ricevi ?


ciao : )
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia

Re: Distinguere date ripetitive

Postdi Flash30005 » 01/04/10 13:26

Alessandro999 ha scritto:per quanto dici riguardo all' invio dei fogli , non so a che indirizzo li ricevi ?


Fai la stessa procedura scegliendo un Server Host poi il link (se non vuoi renderlo pubblico in un post del forum) lo invii in MP a me, inviando anche il link per cancellare il file dall'Host (Rapidshare lo fornisce).

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Distinguere date ripetitive

Postdi Alessandro999 » 01/04/10 17:24

Flash30005 ha scritto:
Alessandro999 ha scritto:per quanto dici riguardo all' invio dei fogli , non so a che indirizzo li ricevi ?


Fai la stessa procedura scegliendo un Server Host poi il link (se non vuoi renderlo pubblico in un post del forum) lo invii in MP a me, inviando anche il link per cancellare il file dall'Host (Rapidshare lo fornisce).

ciao



messaggio ricevuto Flash ,sono andato a vedere come fare su rapidshare , se ci sono problemi ti invio il file in mp.

ciao e buona serata :)
Windows 10 + office 2007
Windows 7 + Office 2007
Avatar utente
Alessandro999
Utente Senior
 
Post: 161
Iscritto il: 04/06/09 11:42
Località: Venezia


Torna a Applicazioni Office Windows


Topic correlati a "Distinguere date ripetitive":


Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti