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 » 30/12/12 23:07

Buon anno e tantissimi auguri
In tanto posto questa richiesta pur sapendo che probabilmente sarà esaudita con l’anno nuovo.

La macro che adopero in questi fogli (per l’esattezza quattro), mi colora di giallo le cinquine che hanno al loro interno uno o più numeri che si trovano da L1 a Z1; la colonna “G” marca la quantità di questi numeri che sono presenti nella cinquina.

Con una formula in L2:Z2 che trascinerò sotto, vorrei far comparire il numero-i presenti nella cinquina di appartenenza (vedi immagine).
Allego anche la macro fatta da Avatar nel 2011 che modificandola potrebbe dare gli stessi esiti della formula.

https://dl.dropbox.com/u/18220462/IMMAG ... ra3%20.PNG

Codice: Seleziona tutto
Sub Colora3()
For I = 1 To 4
Sheets(I).Select
URC = Range("C" & Rows.Count).End(xlUp).Row
Range("C1:C" & URC).Interior.ColorIndex = xlNone
Range("G1:G" & URC).ClearContents
Dim VettV(5) As Integer
    For RR = 2 To URC
        Contatore = 0
        VettV(1) = Val(Mid(Range("C" & RR).Text, 1, 2))
        VettV(2) = Val(Mid(Range("C" & RR).Text, 4, 2))
        VettV(3) = Val(Mid(Range("C" & RR).Text, 7, 2))
        VettV(4) = Val(Mid(Range("C" & RR).Text, 10, 2))
        VettV(5) = Val(Mid(Range("C" & RR).Text, 13, 2))
        For CC = 12 To 26
        If Cells(1, CC).Value <> 0 Then
            ValC = Cells(1, CC).Value
            For VV = 1 To 5
            If ValC = VettV(VV) Then Contatore = Contatore + 1
            Next VV
            If Contatore > 0 Then Range("C" & RR).Interior.ColorIndex = 6
            Range("G" & RR).Value = Contatore
        End If
        Next CC
    Next RR
Next I
End Sub


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

Sponsor
 

Re: Excel formula o macro

Postdi Flash30005 » 31/12/12 10:48

Forse così?

Codice: Seleziona tutto
Sub Colora3()
For I = 1 To 4
Sheets(I).Select
URC = Range("C" & Rows.Count).End(xlUp).Row
Range("C1:C" & URC).Interior.ColorIndex = xlNone
Range("G1:G" & URC).ClearContents
Dim VettV(5) As Integer
    For RR = 1 To URC
        Contatore = 0
        VettV(1) = Val(Mid(Range("C" & RR).Text, 1, 2))
        VettV(2) = Val(Mid(Range("C" & RR).Text, 4, 2))
        VettV(3) = Val(Mid(Range("C" & RR).Text, 7, 2))
        VettV(4) = Val(Mid(Range("C" & RR).Text, 10, 2))
        VettV(5) = Val(Mid(Range("C" & RR).Text, 13, 2))
        For CC = 12 To 26
            ValC = Cells(1, CC).Value
            For VV = 1 To 5
                If ValC = VettV(VV) Then
                Contatore = Contatore + 1
                Cells(RR, CC).Value = ValC
                End If
            Next VV
            If Contatore > 0 Then Range("C" & RR).Interior.ColorIndex = 6
            Range("G" & RR).Value = Contatore
        Next CC
    Next RR
Next I
End Sub



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 » 31/12/12 11:45

https://dl.dropbox.com/u/18220462/IMMAG ... mbi%20.PNG

Ciao Flash e grazie

Va tutto benone tranne il foglio ambi.
Come vedi da immagine in colonna "G" anziché marcare uno o due, segna risultati diversi. Probabilmente dovuto al fatto che trattasi solamente di due numeri e non cinque nella colonna "C".

Ciao
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 » 31/12/12 14:02

Ma cosa c'entra la colonna G
Io ho fatto solo l''implementazione del riporto dati da L a Z
e non ho toccato affatto la macro di Avatar che tu dicevi funzionante

Ma secondo me non dovresti mettere degli zeri sulla testata :D
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 » 31/12/12 15:23

Ciao
Ho capito che tu fai riportare solo i numeri nella griglia e, fintanto che esplora le cinquine la quantità è segnata giusta in colonna "G".
Il problema sorge per l'appunto con solo gli ambi (due numeri e non cinque) in colonna "C".
Non avevo ancora implementato nulla con solo due numeri in questa colonna, questo il motivo per cui avevo detto:

"Come vedi da immagine in colonna "G" anziché marcare uno o due, segna risultati diversi."

Si può fare in modo che anche dove trova solo due numeri in colonna "C" marchi nella "G" la quantità giusta che può essere al massimo due?

Gli zeri non centrano nulla; pur togliendoli i valori di "G" sono invariati.
Ciao
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 » 03/01/13 02:36

Avevo risposto a questo post ma evidentemente è andato perso con la caduta del server all'inizio dell'anno
comunque la macro precedente prevedeva che i numeri nella riga 1 (colonna L:Z) fossero valori superiori a zero e non ci fossero celle vuote
ma se così non è bisogna modificare la macro nei punti indicati
Codice: Seleziona tutto
Dim VettV(5) As Integer  '<<<<< esistente
UCC = Worksheets("Foglio1").Cells(1, Columns.Count).End(xlToLeft).Column '<<<<< aggiungere
    For RR = 2 To URC
'...
'...
        VettV(5) = Val(Mid(Range("C" & RR).Text, 13, 2))  '<<<< esistente
        For CC = 12 To UCC  '<<<< esistente da modificare così

Chiaramente nella riga 1 non ci devono essere formule che non prevedono un numero maggiore di zero perché in tal caso l'errore si ripresenta

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 » 11/01/13 00:47

Ciao Flash,
In questi giorni ho avuto il PC non completamente a posto e quindi solo ora rispondo.
Le modifiche apportate hanno risolto il problema ma chiedo:

Quando nella stringa, riga 1 "L:Z" inserisco 15 numeri e quindi faccio partire la macro, nella griglia li marca correttamente.

Però quando aggiorno a un'altra estrazione e supponendo di inserire solo dieci numeri, mi rimangono impressi nella griglia i cinque numeri inseriti precedentemente.

Si potrebbe ovviare resettando la griglia nei vari fogli immessi?

Ciao
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 » 11/01/13 02:10

Ma scusa,
quando inserisci i 10 numeri elimina gli altri 5
o mi sfugge qualcosa?
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 » 11/01/13 13:04

I numeri da inserire possono essere da 1 a 15.
Quando inserisco 15 numeri nella riga "L:Z" se essi sono presenti, ovviamente vengono marcati nella griglia.
Quando questi, vengono sostituiti e indipendentemente dalla posizione nella griglia, rimangono impressi i precedenti.
Questo il motivo di resettare la griglia quando vengono sostituiti i numeri.
Ciao
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 » 11/01/13 13:23

e vorresti una macro per cancellare i numeri "eccedenti" invece di cancellarli manualmente? :roll:

Dovresti spiegare almeno come avviene la sostituzione dei numeri, es.:
digitati uno alla volta a partire da L
oppure tramite un copia e incolla di un range prelevato da un'altra parte
etc
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 » 11/01/13 19:15

e vorresti una macro per cancellare i numeri "eccedenti" invece di cancellarli manualmente?

Dovresti spiegare almeno come avviene la sostituzione dei numeri, es.:
digitati uno alla volta a partire da L
oppure tramite un copia e incolla di un range prelevato da un'altra parte
etc


Pensavo che era possibile modificare la macro esistente con comando di resettare la griglia nei vari fogli.

La cosa è un po seccante ma posso anche farlo manualmente tutte le volte che cambio i numeri.

I numeri li inserisco manualmente nel primo foglio; negli altri li ottengo con la formula (=Foglio1!L1) fino a "Z".

Codice: Seleziona tutto
Sub Colora3()
For I = 1 To 4
Sheets(I).Select
URC = Range("C" & Rows.Count).End(xlUp).Row
Range("C1:C" & URC).Interior.ColorIndex = xlNone
Range("G1:G" & URC).ClearContents
Dim VettV(5) As Integer
UCC = Worksheets("Foglio1").Cells(1, Columns.Count).End(xlToLeft).Column
    For RR = 2 To URC
        Contatore = 0
        VettV(1) = Val(Mid(Range("C" & RR).Text, 1, 2))
        VettV(2) = Val(Mid(Range("C" & RR).Text, 4, 2))
        VettV(3) = Val(Mid(Range("C" & RR).Text, 7, 2))
        VettV(4) = Val(Mid(Range("C" & RR).Text, 10, 2))
        VettV(5) = Val(Mid(Range("C" & RR).Text, 13, 2))
        For CC = 12 To UCC
            ValC = Cells(1, CC).Value
            For VV = 1 To 5
                If ValC = VettV(VV) Then
                Contatore = Contatore + 1
                Cells(RR, CC).Value = ValC
                End If
            Next VV
            If Contatore > 0 Then Range("C" & RR).Interior.ColorIndex = 6
            Range("G" & RR).Value = Contatore
        Next CC
    Next RR
Next I
End Sub


Ciao
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 » 11/01/13 21:25

Ciao Flash, non vorrei aver frainteso la tua domanda.

I numeri che la macro dovrebbe resettare sono solamente quelli posti nella griglia, L2:Z1000.

Le 1000 righe potrebbero anche aumentare ma raramente.
Ciao
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 » 11/01/13 22:01

Ah ecco!
Perché prima parlavi della riga 1 e poi senza dichiararlo dicevi di cancellare i numeri esistenti (credevo ancora della riga 1)
mentre doveva essere il range dalla riga 2 a n righe delle colonne L:Z
Per fare questo devi aggiungere una riga dove indicato
Codice: Seleziona tutto
Range("G1:G" & URC).ClearContents '<<<<<<<<<< esistente
Range("L2:Z" & URC).ClearContents  '<<<<< aggiungere questa riga
Dim VettV(5) As Integer   '<<<<<<<<<<< esistente


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 » 11/01/13 22:52

GRANDE FLASH

MAGNIFICO!!!

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


Torna a Applicazioni Office Windows


Topic correlati a "Excel formula o macro":


Chi c’è in linea

Visitano il forum: Zer0Kelvin e 18 ospiti