Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

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

MACRO

Postdi Lucio Peruggini » 28/11/16 16:13

Buona giornata a tutti
Qualcuno per favore e gentilmente potrebbe farmi una macro con le seguenti caratteristiche?

Ho tre fogli BA - NA - PA con le medesime impostazioni tranne la colonna “A” laddove i valori sono diversi da foglio a foglio. Essa contiene solamente una piccola parte numerica rispetto alla colonna “C6:C95” che è completa da 1 a 90.
Faccio un esempio sul foglio BA ma ovviamente è valido per i tre fogli.

ESEMPIO:
La funzione deve confrontare i valori della colonna “C” con quelli della “A” e quando trova un valore identico, deve inserire un asterisco nella cella corrispondente con riferimento alla cella “A3”………………………… riga 3.

C6 = 1 che troviamo anche in A6 e quindi nella colonna corrispondente la cella A3 (riga 3) in questo caso “P6”andremo a inserire l’asterisco.

A seguire, nella colonna “C7” vi è il valore 2 che non è presente in “A6:A95”; premetto che in questa colonna “A6:A95” i valori immessi consecutivamente sono sempre in ordine crescente. In questo caso, bisogna colorare di giallo la cella di pertinenza “P7”.

Tutto qui! Superficialmente facile ma un pochetto intricato.
Allego file Excel

https://dl.dropboxusercontent.com/u/182 ... %20PA.xlsx

Grazie in anticipo se vorrete farmi questa cortesia.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Sponsor
 

Re: MACRO

Postdi Anthony47 » 29/11/16 01:53

La logica per mettere l'asterisco mi sembra chiara, quella per applicare la colorazione alle celle P7 e P33 francamente mi sfugge.
Intanto per l'asterisco:
Codice: Seleziona tutto
Sub compilaz()
Dim myCol, Results As Range, I As Long
'
Set Results = Range(Range("A6"), Range("A6").End(xlDown))
myCol = Application.Match(Range("A3").Value, Range("D3:HZ3"), 0) + 3
If Not IsError(myCol) Then
    For I = 6 To 95
        If Cells(I, "C") > 0 Then
            If Application.WorksheetFunction.CountIf(Results, Cells(I, "C").Value) > 0 Then
                Cells(I, myCol) = "*"
            End If
        End If
   
    Next I
End If
Set Risults = Nothing
End Sub
Avatar utente
Anthony47
Moderatore
 
Post: 17440
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: MACRO

Postdi Lucio Peruggini » 29/11/16 12:53

Ciao Anthony e innanzitutto grazie mille per l'aiuto.

La macro svolge appieno il suo lavoro!
Per quanto riguarda la colorazione delle celle (in questo caso P7 e P33), non vi è nulla di arcano e c'è sempre una logica dietro ogni procedura.
Logica che ovviamente tu non potevi conoscere; essa sta a significare che nell'ultima estrazione in archivio la 9244, poiché di questo trattasi, il numero di C7 "2" e quello di C33 "28" sono per l'appunto presenti alla 9244. Da questo punto in poi infatti, inizia la logica vera e propria................................; la colorazione per me è solamente una questione visiva ma con il susseguirsi delle estrazioni immesse ha una certa rilevanza.

Questa dovrei farla a manina ma visto che c'è la macro, tanto vale inserirla.

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

Re: MACRO

Postdi Lucio Peruggini » 29/11/16 14:42

Ciao Anthony, probabilmente la logica che cercavi è questa:
Il colore va messo laddove il numero non è presente nel confronto colonne "C-A" ma occorre che: nella colonna antecedente in questo caso la 9243 vi sia la presenza dell'asterisco come nei due casi che hai riportato; P7 - P33 preceduti dall'asterisco.

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

Re: MACRO

Postdi Lucio Peruggini » 29/11/16 16:11

Ciao Anthony, non so se fattibile:
Mi ero fatto l'idea che la macro in questione funzionasse anche andando a ritroso e, avendo fatto un controllo, mi sono accorto che non è così. Evidentemente è stata una mia mancanza!

Se nella cella "A3" si immette un valore (di quelli che ci sono nella medesima riga) D3: in poi, ovviamente i valori di A6:A95 cambiano, bisogna poter fare la verifica per controllo.
Quindi la cella "A3" per così dire comanda l'orchestra.

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

Re: MACRO

Postdi Anthony47 » 30/11/16 20:59

Intanto la macro che mette anche il colore di tamponamento dovrebbe essere questa:
Codice: Seleziona tutto
Sub compilaz()
Dim myCol, Results As Range, I As Long
'
Set Results = Range(Range("A6"), Range("A6").End(xlDown))
myCol = Application.Match(Range("A3").Value, Range("D3:HZ3"), 0) + 3
If Not IsError(myCol) Then
    For I = 6 To 95
        If Cells(I, "C") > 0 Then
            If Application.WorksheetFunction.CountIf(Results, Cells(I, "C").Value) > 0 Then
                Cells(I, myCol) = "*"
                Cells(I, myCol).Interior.Color = RGB(255, 255, 255)
            Else
                Cells(I, myCol).Interior.Color = RGB(255, 255, 255)
                If Cells(I, myCol - 1) = "*" Then Cells(I, myCol).Interior.Color = RGB(200, 255, 0)   '<<< 255,255,0 per Giallo
            End If
        End If
   
    Next I
End If
Set Risults = Nothing
End Sub

Quanto all'ultimo messaggio, ho capito che A3 comanda l'orchestra, ma io non so che musica vogliono suonare...
In parole povere, se metti diciamo 9241, la macro che dovrebbe fare? Deve togliere gli asterisci immeritati e lasciare solo quelli meritati? E il colore di riempimento, vale sempre la regola che se * immeritato e presente nella colonna precedente allora bisogna colorare?

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

Re: MACRO

Postdi Lucio Peruggini » 01/12/16 00:57

Quanto all'ultimo messaggio, ho capito che A3 comanda l'orchestra, ma io non so che musica vogliono suonare...


Ciao Anthony, il tuo umorismo mi fa ridere da matti ed è meglio così; si ride cosi poco nella vita.................

Il colore va benissimo!


In parole povere, se metti diciamo 9241, la macro che dovrebbe fare? Deve togliere gli asterisci immeritati e lasciare solo quelli meritati? E il colore di riempimento, vale sempre la regola che se * immeritato e presente nella colonna precedente allora bisogna colorare?


La funzione che svolge ora la macro è corretta!
Se voglio controllare una colonna a ritroso diciamo la 9241, sarebbe più che giusta l'opzione da te consigliata: cancellare tutto nella colonna che si vuole controllare in questo caso la 9241, e rimette gli asterischi e colore. Ovviamente cambierò i valori in "A6:A95" mettendo quelli che a quella estrazione (9241) erano giusti. Chiaramente avrò messo anche in A3 9241.

Comunque se questo complica la situazione, lasciamo tutto così; va più che bene! In avanti ho già visto che funziona benissimo.

Gli asterischi immessi finora sono stati inseriti manualmente, controllando ad ogni estrazione e visivamente i numeri da 1 a 90; ora non c'è più pericolo di sbagliare.

Non voglio rubarti altro tempo che puoi dedicare ad altri utenti!
Un caro saluto e ancora grazie per la cortesia, ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO

Postdi Lucio Peruggini » 02/12/16 01:23

Ciao Anthony, giusto per dovere di cronaca, ho ricontrollato a ritroso e funziona tutto benissimo.
Avevo inserito valori non esatti in A6:A95 e quindi avevo affermato che a ritroso non funzionava; mi ero sbagliato !

Più che bene!
GRAZIE e buona giornata.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23


Torna a Applicazioni Office Windows


Topic correlati a "MACRO":


Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti