Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel: Formula o 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: Formula o macro

Postdi Lucio Peruggini » 23/02/11 14:55

Scusate ma devo arrivare a 3 MESSAGGI.

SALUTI
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Sponsor
 

Excel: Formula o macro

Postdi Lucio Peruggini » 23/02/11 14:56

Scusate ma devo arrivare a 3 MESSAGGI.
SALUTI
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Excel: Formula o macro

Postdi Lucio Peruggini » 23/02/11 14:57

Scusate ma devo arrivare a 3 MESSAGGI.
SALUTI
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

formula o macro

Postdi Lucio Peruggini » 23/02/11 15:07

Buona giornata, nella fotto allegata è spiegato il quesito.
Grazie per l'attenzione.

Nota: che si tratti di formula da inserire in una colonna a parte oppure di una macro che colori le celle (colore uguale, va bene), non ha importanza. L'importante è che sia il più veloce possibile.

Saluti

http://screenshotuploader.com/s/GL6fMskQd83
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Anthony47 » 23/02/11 15:29

Per favore dovresti usare gli allegati "a complemento" della descrizione, non "in sostituzione"; perche' come hai fatto quando l' immagine sara' non piu' disponibile questa discussione diventa illegibile, mentre l' obiettivo del forum e' anche creare un serbatoio di quesiti e (possibilmente) soluzioni che chiunque possa in futuro consultare.

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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 23/02/11 17:35

Anthony47 ha scritto:Per favore dovresti usare gli allegati "a complemento" della descrizione, non "in sostituzione"; perche' come hai fatto quando l' immagine sara' non piu' disponibile questa discussione diventa illegibile, mentre l' obiettivo del forum e' anche creare un serbatoio di quesiti e (possibilmente) soluzioni che chiunque possa in futuro consultare.

Ciao.


Ok, provvedo quanto prima; grazie per la precisazione.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 23/02/11 18:08

Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Flash30005 » 24/02/11 09:37

Anthony ti aveva chiesto di inserire nel post il quesito e completare la descrizione con immagine o file.

Inserendo il file invece dell'immagine, la discussione rimarrà ugualmente illeggibile nel caso in cui il file non dovesse essere più disponibile (con Rapidshare è abbastanza facile che ciò accada)

Comunque nella colonna D hai dei valori in formato testo es.
    78.60
    78.58
    04.66
    71.04
    10.71
    71.28
    79.23
    60.78
    78.60
    63.68
    63.45
e vorresti evidenziare le celle quando incontri valori uguali o invertiti (nel gergo credo si chiamino Isotopi)
come il testo 78.60 e 60.78
Avrei risolto il quesito con una macro di questo tipo
Codice: Seleziona tutto
Sub ColoraUguali()
Worksheets("Foglio1").Select
Columns("D:D").Interior.ColorIndex = xlNone
UR = Cells(Rows.Count, 1).End(xlUp).Row
For RR1 = 1 To UR - 1
    N11 = Range("D" & RR1).Text
    N12 = Mid(Range("D" & RR1).Text, 4, 2) & "." & Mid(Range("D" & RR1).Text, 1, 2)
    Col = (Val(Mid(Range("D" & RR1).Text, 1, 2)) + Val(Mid(Range("D" & RR1).Text, 4, 2))) Mod 55 + 1
    For RR2 = RR1 + 1 To UR
        N2 = Range("D" & RR2).Text
        If N11 = N2 Or N12 = N2 Then
            Range("D" & RR1).Interior.ColorIndex = Col
            Range("D" & RR2).Interior.ColorIndex = Col
        End If
    Next RR2
Next RR1
End Sub

Verrà assunto il colore pari al valore della somma dei due numeri che compongono il "testo" pertanto potrai avere anche celle molto scure tali da non leggere il testo contenuto.
Puoi Colorare la colonna "E" modificando le due righe di codice che colorano le celle della colonna D così
Codice: Seleziona tutto
           
...
Range("E" & RR1).Interior.ColorIndex = Col
Range("E" & RR2).Interior.ColorIndex = Col
...

Oppure mettere un asterisco nella colonna "E"
modificando sempre quelle due righe così:
Codice: Seleziona tutto
...
Range("E" & RR1).value = "*"
Range("E" & RR2).value = "*"
...


Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 24/02/11 13:12

Ok, non avevo ben afferrato quanto segnalatomi da Anthony.

Intanto, grazie per la macro che funziona benissimo; ho inserito gli asterischi perchè più pulito e meno pesante.
V'è però, una "pecca" che forse non ho ben spiegato.

Manca una condizione:

L'asterisco deve segnalare il medesimo valore ma nello stesso range estrazionale. Di seguito ci sono due estrazioni consecutive "colonna - A" 3950-3951.
Il "NO" segnalato, vul dire che la formula prende il valore della colonna "E" non nella stessa estrazione ma anche in quelle che seguono; cosa che non deve fare.

In pratica, il valore uguale deve trovarsi nella medesima estrazione ma con ruote diverse.

Nella fattispecie, non si tratta di "isotopismo" che per correttezza significa (valori uguali su medesima posizione), bensì di Isocronismo; che vuol dire: medesimo valore su ruote diverse e nella medesima estrazione.

Codice: Seleziona tutto
3950   Spia   Ba   78.60      
3950   Spia   Ba   78.58      
3950   Spia   Ba   68.22      
3950   Spia   Ba   68.58      
3950   Spia   Ba   22.78      
3950   Spia   Ba   60.58      
3950   Spia   Ba   22.60      
3950   Spia   Ba   68.78      
3950   Spia   Ba   22.58      
3950   Spia   Ba   68.60   *   NO
3950   Spia   Ca   04.66      
3950   Spia   Ca   71.04      
3950   Spia   Ca   18.04      
3950   Spia   Ca   18.71      
3950   Spia   Ca   18.05      
3950   Spia   Ca   71.66      
3950   Spia   Ca   05.66      
3950   Spia   Ca   18.66      
3950   Spia   Ca   04.05      
3950   Spia   Ca   71.05      
3950   Spia   Fi   10.71      
3950   Spia   Fi   71.28      
3950   Spia   Fi   10.28      
3950   Spia   Fi   72.71      
3950   Spia   Fi   72.28   *   NO
3950   Spia   Fi   40.10      
3950   Spia   Fi   10.72      
3950   Spia   Fi   40.28      
3950   Spia   Fi   40.72      
3950   Spia   Fi   40.71      
3950   Spia   Ge   17.54      
3950   Spia   Ge   17.52      
3950   Spia   Ge   54.52      
3950   Spia   Ge   03.52      
3950   Spia   Ge   16.52      
3950   Spia   Ge   03.54      
3950   Spia   Ge   16.03      
3950   Spia   Ge   17.03   *   SI
3950   Spia   Ge   17.16      
3950   Spia   Ge   16.54      
3950   Spia   Mi   82.84      
3950   Spia   Mi   79.23      
3950   Spia   Mi   84.90      
3950   Spia   Mi   79.84      
3950   Spia   Mi   79.82      
3950   Spia   Mi   84.23      
3950   Spia   Mi   23.90      
3950   Spia   Mi   82.90      
3950   Spia   Mi   82.23      
3950   Spia   Mi   79.90      
3950   Spia   Na   27.55      
3950   Spia   Na   27.02      
3950   Spia   Na   27.26      
3950   Spia   Na   27.11      
3950   Spia   Na   55.02      
3950   Spia   Na   55.26      
3950   Spia   Na   55.11      
3950   Spia   Na   02.26      
3950   Spia   Na   02.11      
3950   Spia   Na   26.11      
3950   Spia   Pa   63.68      
3950   Spia   Pa   63.45      
3950   Spia   Pa   63.37      
3950   Spia   Pa   63.38      
3950   Spia   Pa   68.45      
3950   Spia   Pa   68.37      
3950   Spia   Pa   68.38      
3950   Spia   Pa   45.37      
3950   Spia   Pa   45.38      
3950   Spia   Pa   37.38      
3950   Spia   Ro   05.64      
3950   Spia   Ro   05.24      
3950   Spia   Ro   05.51      
3950   Spia   Ro   05.12      
3950   Spia   Ro   64.24   *   NO
3950   Spia   Ro   64.51      
3950   Spia   Ro   64.12      
3950   Spia   Ro   24.51      
3950   Spia   Ro   24.12      
3950   Spia   Ro   51.12      
3950   Spia   To   35.01      
3950   Spia   To   35.03      
3950   Spia   To   35.41      
3950   Spia   To   35.17      
3950   Spia   To   01.03      
3950   Spia   To   01.41      
3950   Spia   To   01.17      
3950   Spia   To   03.41      
3950   Spia   To   03.17   *   SI
3950   Spia   To   41.17      
3950   Spia   Ve   16.24      
3950   Spia   Ve   16.88      
3950   Spia   Ve   16.90      
3950   Spia   Ve   16.77      
3950   Spia   Ve   24.88      
3950   Spia   Ve   24.90      
3950   Spia   Ve   24.77      
3950   Spia   Ve   88.90      
3950   Spia   Ve   88.77      
3950   Spia   Ve   90.77
-------------------------------------------------      
3951   Spia   Ba   60.77      
3951   Spia   Ba   60.43      
3951   Spia   Ba   77.72      
3951   Spia   Ba   60.72      
3951   Spia   Ba   28.72   *   NO
3951   Spia   Ba   72.43      
3951   Spia   Ba   77.43      
3951   Spia   Ba   28.43      
3951   Spia   Ba   77.28      
3951   Spia   Ba   60.28      
3951   Spia   Ca   72.36      
3951   Spia   Ca   80.50      
3951   Spia   Ca   50.36      
3951   Spia   Ca   16.50      
3951   Spia   Ca   80.72      
3951   Spia   Ca   80.16      
3951   Spia   Ca   80.36      
3951   Spia   Ca   72.50      
3951   Spia   Ca   16.72      
3951   Spia   Ca   16.36      
3951   Spia   Fi   60.06      
3951   Spia   Fi   06.29      
3951   Spia   Fi   06.63      
3951   Spia   Fi   63.29      
3951   Spia   Fi   15.63      
3951   Spia   Fi   15.06      
3951   Spia   Fi   60.29      
3951   Spia   Fi   60.63   *   SI
3951   Spia   Fi   15.29      
3951   Spia   Fi   60.15      
3951   Spia   Ge   63.13      
3951   Spia   Ge   34.13      
3951   Spia   Ge   34.63   *   SI
3951   Spia   Ge   60.13      
3951   Spia   Ge   34.59   *   SI
3951   Spia   Ge   59.13   *   
3951   Spia   Ge   59.63      
3951   Spia   Ge   34.60   *   SI
3951   Spia   Ge   60.63   *   SI
3951   Spia   Ge   60.59   *   SI
3951   Spia   Mi   20.08      
3951   Spia   Mi   20.59      
3951   Spia   Mi   87.20      
3951   Spia   Mi   08.59      
3951   Spia   Mi   87.08      
3951   Spia   Mi   87.13      
3951   Spia   Mi   13.59   *   SI
3951   Spia   Mi   13.08      
3951   Spia   Mi   13.20      
3951   Spia   Mi   87.59      
3951   Spia   Na   24.52      
3951   Spia   Na   24.35      
3951   Spia   Na   24.64   *   NO
3951   Spia   Na   24.33      
3951   Spia   Na   52.35      
3951   Spia   Na   52.64      
3951   Spia   Na   52.33      
3951   Spia   Na   35.64      
3951   Spia   Na   35.33      
3951   Spia   Na   64.33      
3951   Spia   Pa   34.60   *   SI
3951   Spia   Pa   34.40      
3951   Spia   Pa   34.68      
3951   Spia   Pa   34.59   *   SI
3951   Spia   Pa   60.40      
3951   Spia   Pa   60.68   *   
3951   Spia   Pa   60.59   *   SI
3951   Spia   Pa   40.68      
3951   Spia   Pa   40.59      
3951   Spia   Pa   68.59      
3951   Spia   Ro   42.08      
3951   Spia   Ro   42.19      
3951   Spia   Ro   42.83      
3951   Spia   Ro   42.75      
3951   Spia   Ro   08.19      
3951   Spia   Ro   08.83      
3951   Spia   Ro   08.75      
3951   Spia   Ro   19.83      
3951   Spia   Ro   19.75      
3951   Spia   Ro   83.75      
3951   Spia   To   73.49      
3951   Spia   To   73.21      
3951   Spia   To   73.16      
3951   Spia   To   73.20      
3951   Spia   To   49.21      
3951   Spia   To   49.16      
3951   Spia   To   49.20      
3951   Spia   To   21.16      
3951   Spia   To   21.20      
3951   Spia   To   16.20      
3951   Spia   Ve   36.20      
3951   Spia   Ve   36.63      
3951   Spia   Ve   36.56      
3951   Spia   Ve   36.34      
3951   Spia   Ve   20.63      
3951   Spia   Ve   20.56      
3951   Spia   Ve   20.34      
3951   Spia   Ve   63.56      
3951   Spia   Ve   63.34   *   SI
3951   Spia   Ve   56.34      


Grazie per l'attenzione.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Flash30005 » 25/02/11 09:12

E' sufficiente aggiungere il controllo del valore in colonna A e in colonna C
La condizione è che il valore in colonna A deve essere uguale mentre deve essere diverso quello in colonna C (vedi la riga aggiunta)

Codice: Seleziona tutto
Sub ColoraUguali()
Worksheets("Foglio2").Select
Columns("D:D").Interior.ColorIndex = xlNone
UR = Cells(Rows.Count, 1).End(xlUp).Row
For RR1 = 1 To UR - 1
    N11 = Range("D" & RR1).Text
    N12 = Mid(Range("D" & RR1).Text, 4, 2) & "." & Mid(Range("D" & RR1).Text, 1, 2)
    Col = (Val(Mid(Range("D" & RR1).Text, 1, 2)) + Val(Mid(Range("D" & RR1).Text, 4, 2))) Mod 55 + 1
    For RR2 = RR1 + 1 To UR
        N2 = Range("D" & RR2).Text
        If Range("A" & RR1).Value = Range("A" & RR2).Value And Range("C" & RR1).Value <> Range("C" & RR2).Value Then '<<<<<<< riga aggiunta per controllo valori
        If N11 = N2 Or N12 = N2 Then
            Range("D" & RR1).Interior.ColorIndex = Col
            Range("D" & RR2).Interior.ColorIndex = Col
        End If
        End If  '<<<<< riga aggiunta termine condizione
    Next RR2
Next RR1
End Sub


Ho appositamente lasciato il codice per colorare le celle per verificare che le celle colorate corrispondessero agli asterischi da te convalidati con SI.

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 25/02/11 11:13

GRAZIE FLASH! Funziona a meraviglia

Buona domenica
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 25/02/11 14:15

Ciedo scusa se rivolgo un ulteriore approfondimento sul quesito da me posto. Ho provato la macro con molte più righe e i tempi risultano biblici; allora chiedo:

Sarebbe fattibile una formula excel da inserire in colonna "E", piuttosto che la macro in questione? Penso che i tempi siano di gran lunga inferiori. Grazie, Lucio.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 25/02/11 17:34

Scusa Flash, ho provato a inserire tutte le righe nel foglio due ma non mi funziona più.

Questa è la macro, vi è forse un limite di qualche genere? Le righe ammontano a 437.000
Comunque, rimane in sospeso la mia richiesta se optare per una formula da inserire in colonna "E" che penso sia più veloce; ovviamente con il tempo dovuto.
Grazie

Codice: Seleziona tutto
Sub ColoraUguali()
Worksheets("Foglio2").Select
Columns("D:D").Interior.ColorIndex = xlNone
UR = Cells(Rows.Count, 1).End(xlUp).Row
For RR1 = 1 To UR - 1
    N11 = Range("D" & RR1).Text
    N12 = Mid(Range("D" & RR1).Text, 4, 2) & "." & Mid(Range("D" & RR1).Text, 1, 2)
    Col = (Val(Mid(Range("D" & RR1).Text, 1, 2)) + Val(Mid(Range("D" & RR1).Text, 4, 2))) Mod 55 + 1
    For RR2 = RR1 + 1 To UR
        N2 = Range("D" & RR2).Text
        If Range("A" & RR1).Value = Range("A" & RR2).Value And Range("C" & RR1).Value <> Range("C" & RR2).Value Then '<<<<<<< riga aggiunta per controllo valori
        If N11 = N2 Or N12 = N2 Then
           Range("E" & RR1).Value = "*" 'Range("D" & RR1).Interior.ColorIndex = Col
           Range("E" & RR2).Value = "*" 'Range("D" & RR2).Interior.ColorIndex = Col
        End If
        End If  '<<<<< riga aggiunta termine condizione
    Next RR2
Next RR1
End Sub
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Flash30005 » 25/02/11 18:11

Ti garantisco che non ci sono limiti oltre i quali non funziona più (funziona da 1 riga a quante ne hai con i valori nella colonna "A")

Per velocizzare, inserisci queste due righe di codice all'inizio della macro (subito dopo il nome)
Codice: Seleziona tutto
   
Sub ColoraUguali()  '<<<< nome macro
Application.ScreenUpdating = False
  Application.Calculation = xlManual
Worksheets("Foglio2").Select '<<<<<< ATTENZIONE a questa riga esistente: controlla che il nome del foglio corrisponde al tuo


e queste due righe prima dell'End sub
Codice: Seleziona tutto
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True


Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 25/02/11 18:54

Ciao Flash

Ho inserito quanto mi hai detto e purtroppo continua a non funzionare.
Funziona benissimo solo con un'estrazione (la 3950) cioè la prima; incollata da sola nel foglio 2. Ma, quando inserisco tutte le righe, non funziona più.
Non so se ho sbagliato a inserire le aggiunte

Codice: Seleziona tutto
Sub ColoraUguali()
Application.ScreenUpdating = False
  Application.Calculation = xlManual
Worksheets("Foglio2").Select
Columns("D:D").Interior.ColorIndex = xlNone
UR = Cells(Rows.Count, 1).End(xlUp).Row
For RR1 = 1 To UR - 1
    N11 = Range("D" & RR1).Text
    N12 = Mid(Range("D" & RR1).Text, 4, 2) & "." & Mid(Range("D" & RR1).Text, 1, 2)
    Col = (Val(Mid(Range("D" & RR1).Text, 1, 2)) + Val(Mid(Range("D" & RR1).Text, 4, 2))) Mod 55 + 1
    For RR2 = RR1 + 1 To UR
        N2 = Range("D" & RR2).Text
        If Range("A" & RR1).Value = Range("A" & RR2).Value And Range("C" & RR1).Value <> Range("C" & RR2).Value Then '<<<<<<< riga aggiunta per controllo valori
        If N11 = N2 Or N12 = N2 Then
           Range("E" & RR1).Value = "*" 'Range("D" & RR1).Interior.ColorIndex = Col
           Range("E" & RR2).Value = "*" 'Range("D" & RR2).Interior.ColorIndex = Col
        End If
        End If  '<<<<< riga aggiunta termine condizione
    Next RR2
Next RR1
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ad ogni modo, avevo già fatto attenzione al "foglio 2"
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Flash30005 » 26/02/11 01:26

Controlla che i dati importati nella colonna "D" non abbiano spazi prima e dopo il valore testo
es.: che "78.60" non sia " 78.60" o "78.60 " o " 78.60 " (come vedi con spazi prima, dopo o addirittura prima e dopo il valore) perché in questi casi non funziona o dà risultati inattesi
Capisci da te che se funziona (come hai confermato nel tuo primo post dopo l'invio della macro definitiva) non può non funzionare più aggiungendo delle righe, se le stesse sono formattate e hanno i valori nella stessa maniera,
In pratica nella colonna "D" deve esserci un valore testo di cinque caratteri (sempre) e con un punto posizionato nel terzo carattere.
Se ci sono spazi prima e dopo potrai inserire la funzione Trim che annulla detti spazi

Fai sapere
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 26/02/11 14:23

Ciao Flash, i dati sono in ordine e sinceramente non so proprio dove parare.
Ad ogni modo ho notato che la macro funziona quando a inserire i dati uguali sono io che li metto. Questo mi lascia pensare che, probabilmente questi dati vadano in qualche modo formattati. Ho provato anche a inserire i dati originali ma niente da fare, funziona solamente quando io metto dati di uguale valore! Accetto consigli e chiedo ancora se è possibile optare con una formula da inserire in colonna "E" anche se ovviamente non ne conosco la fattibilità.
Grazie per l'attenzione e l'aiuto, Lucio.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Flash30005 » 26/02/11 15:29

Questo significa che hai dei dati "sporchi"
Ti consiglio di inviare il file con questi dati ed esaminerò il caso

Realizzare quanto chiedi con delle formule non è una cosa semplice e non risolveresti ugualmente se i dati non sono "leggibili" correttamente.

Nel tuo primo file i valori (78.60, etc) erano in formato testo e la lunghezza stringa era di 5 caratteri,
probabilmente quando importi i dati importerai anche spazi oppure vengono inseriti in celle formattate diversamente.

Ripeto che è opportuno l'invio del file da parte tua

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel: Formula o macro

Postdi Lucio Peruggini » 26/02/11 16:21

Nessun problema a inviarti il file completo, eccolo.

rapidshare.com/files/449944142/formuletta.7z
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 890
Iscritto il: 24/01/11 16:23

Re: Excel: Formula o macro

Postdi Anthony47 » 27/02/11 00:24

Se ho seguito bene i discorsi allora la seguente macro dovrebbe funzionare:
Codice: Seleziona tutto
Option Base 1
Option Explicit

Sub Spera2()
Dim MatrBck
Dim NumABI
Dim NumABK
Dim LRCod As Long, UBCod As Long
Dim Debg As Boolean
Dim I As Long, JJ As Long, CJJ As Long, KC As Integer, KK As Long
Dim CEstr As Long

'Debg = True        '<<<< Userebbe M1:M5 per timer
Sheets("Foglio2").Select         '<<< ADATTARE
If Debg Then Range("M1:M20").ClearContents
If Debg Then [M1] = Timer
Columns("D:D").Interior.ColorIndex = xlNone
LRCod = Cells(Rows.Count, 1).End(xlUp).Row
'
MatrBck = Range("D1:D" & LRCod)
UBCod = UBound(MatrBck, 1)
'
JJ = 1
Do
CEstr = Cells(JJ, 1)
KC = 4
CJJ = Application.WorksheetFunction.CountIf(Range("A1:A" & LRCod), CEstr)
For I = JJ To JJ - 1 + CJJ
    NumABI = Split(MatrBck(I, 1), ".")
    For KK = I + 1 To JJ - 1 + CJJ
    NumABK = Split(MatrBck(KK, 1), ".")
        If NumABI(0) = NumABK(0) And NumABI(1) = NumABK(1) Then
            Cells(I, 4).Interior.ColorIndex = KC
            Cells(KK, 4).Interior.ColorIndex = KC
            KC = KC + 1
        Else
        If NumABI(0) = NumABK(1) And NumABI(1) = NumABK(0) Then
            Cells(I, 4).Interior.ColorIndex = KC
            Cells(KK, 4).Interior.ColorIndex = KC
            KC = KC + 1
        End If
        End If
    Next KK
Next I
JJ = JJ + CJJ
If JJ >= LRCod Then Exit Do
Loop
If Debg Then [M2] = Timer
End Sub

Lavora su Foglio2 (ma basta modificare la riga marcata <<< ADATTARE), e in 3-4 minuti dovrebbe completare 500mila righe.
Va messa in un modulo vuoto, in modo che Option Base 1 sia in testa a tutto.

Con le formule sarebbe andata in crisi la memoria, perche' avrei usato formule a matrice su ogni riga, come insomma come lavorare su (500mila * 100) righe.

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: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Excel: Formula o macro":


Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti