Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

MACRO PER COPIARE SE IN UNA CELLA C'e X

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 PER COPIARE SE IN UNA CELLA C'e X

Postdi tav » 08/04/18 21:06

Buonasera a tutti,
avrei bisogno della vostra mano.
Nel file che allego ho il seguente problema, dovrei copiare dal foglio SIM al foglio INVIO la intestazione (parte in grigio) e successivamente copiare solo le righe ( da A a K) in cui nella colonna L c'è la x.
Successivamente avrei bisogno che nel foglio INVIO le righe prendano il colore delle celle rosso se nella colonna M (del foglio SIM) c'è il valore 2, bianco se non vi è valore.
Grazie
Andrea
tav
Utente Junior
 
Post: 46
Iscritto il: 08/04/18 20:57

Sponsor
 

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi Anthony47 » 08/04/18 23:30

Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487

Ti aspettiamo...
Avatar utente
Anthony47
Moderatore
 
Post: 17646
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi tav » 09/04/18 09:02

tav
Utente Junior
 
Post: 46
Iscritto il: 08/04/18 20:57

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi Anthony47 » 09/04/18 12:05

Allora, diciamo che l'intestazione la copi a mano una volta per tutte e lasciamo alla macro solo la copia della data e del contenuto della tabella.
Per questo ti dovrevve bastare una macro come questa:
Codice: Seleziona tutto
Sub Sim2Invio()
Dim I As Long, dSh As Worksheet, iD As Long, myNext
'
Set dSh = Sheets("Invio")       '<<< Il foglio verso cui si copia
'
dSh.Range("A7").Resize(dSh.Cells(Rows.Count, 1).End(xlUp).Row, 11).Clear
Sheets("SIM").Select
dSh.Range("A1").Value = Range("A1")
For I = 7 To Cells(Rows.Count, 1).End(xlUp).Row
    If UCase(Cells(I, "L")) = "X" Then
        myNext = dSh.Cells(Rows.Count, 1).End(xlUp).Row + 1: If myNext < 7 Then myNext = 7
        Cells(I, 1).Resize(1, 11).Copy dSh.Cells(myNext, 1)
        If Cells(I, "M") = 2 Then
            dSh.Cells(myNext, 1).Resize(1, 11).Interior.Color = RGB(255, 0, 0)
        Else
            dSh.Cells(myNext, 1).Resize(1, 11).Interior.Color = RGB(255, 255, 255)
        End If
    End If
Next I
MsgBox ("Completato...")
End Sub

Va messa in un Modulo standard del vba (es Modulo1) e lanciata all'occasione, magari associandola per comodita' a un pulsante.

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 17646
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi tav » 09/04/18 12:56

Grazie mille davvero.
mi mancherebbe solo la parte dove se la cella M è 1 allora nel foglio invio la riga è gialla
tav
Utente Junior
 
Post: 46
Iscritto il: 08/04/18 20:57

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi tav » 09/04/18 13:35

Scusa ancora il disturbo.
è possibile nel foglio INVIO ordinare per colore la tabella finale? cioè mettere dalla riga A7 tutti quelli in rosso per primo, seguiti dai gialli e seguiti dai bianchi?
tav
Utente Junior
 
Post: 46
Iscritto il: 08/04/18 20:57

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi Anthony47 » 09/04/18 14:29

mi mancherebbe solo la parte dove se la cella M è 1 allora nel foglio invio la riga è gialla
Ma questa prestazione non l'hai mai chiesta...
E, tanto per portarsi avanti, quali sono i possibili valori presenti in colonna M?

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

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi tav » 09/04/18 14:43

scusami hai ragione. i valori sono solo 0,1,2 ( bianco - giallo -rosso).
tav
Utente Junior
 
Post: 46
Iscritto il: 08/04/18 20:57

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi tav » 09/04/18 17:08

Anthony47 ha scritto:
mi mancherebbe solo la parte dove se la cella M è 1 allora nel foglio invio la riga è gialla
Ma questa prestazione non l'hai mai chiesta...
E, tanto per portarsi avanti, quali sono i possibili valori presenti in colonna M?

Ciao


Riusciresti ad aiutarmi a capire come fare sul foglio INVIO a ordinare le righe ( da A7) in base al colore delle celle. Vorrei che il rosso venga prima, poi segue il giallo e ultimo il bianco
tav
Utente Junior
 
Post: 46
Iscritto il: 08/04/18 20:57

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi Anthony47 » 09/04/18 23:36

Allora elimina e usa questa:
Codice: Seleziona tutto
Sub Sim2Invio()
Dim I As Long, dSh As Worksheet, myNext
Dim J As Long, cArr
'
Set dSh = Sheets("Invio")       '<<< Il foglio su cui si copia
'
dSh.Range("A7").Resize(dSh.Cells(Rows.Count, 1).End(xlUp).Row, 11).Clear
Sheets("SIM").Select
dSh.Range("A1").Value = Range("A1")
cArr = Array(2, 1, 0)
For J = LBound(cArr) To UBound(cArr)
    For I = 7 To Cells(Rows.Count, 1).End(xlUp).Row
        If UCase(Cells(I, "L")) = "X" And Cells(I, "M") = cArr(J) Then
            myNext = dSh.Cells(Rows.Count, 1).End(xlUp).Row + 1: If myNext < 7 Then myNext = 7
            Cells(I, 1).Resize(1, 11).Copy dSh.Cells(myNext, 1)
            If Cells(I, "M") = 2 Then
                dSh.Cells(myNext, 1).Resize(1, 11).Interior.Color = RGB(255, 0, 0)
            ElseIf Cells(I, "M") = 1 Then
                dSh.Cells(myNext, 1).Resize(1, 11).Interior.Color = RGB(255, 255, 0)
            Else
                dSh.Cells(myNext, 1).Resize(1, 11).Interior.Color = RGB(255, 255, 255)
            End If
        End If
    Next I
Next J
MsgBox ("Completato...")
End Sub

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

Re: MACRO PER COPIARE SE IN UNA CELLA C'e X

Postdi tav » 10/04/18 06:56

perfetto sei stato super!
grazie
tav
Utente Junior
 
Post: 46
Iscritto il: 08/04/18 20:57


Torna a Applicazioni Office Windows


Topic correlati a "MACRO PER COPIARE SE IN UNA CELLA C'e X":


Chi c’è in linea

Visitano il forum: Nessuno e 46 ospiti