+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Discussione: Ricerca e estrapolazione di determinate righe

  1. #1
    L'avatar di valetin
    valetin non è in linea Novello
    Post
    11

    Ricerca e estrapolazione di determinate righe

    Salve a tutti,
    avrei la necessità di estrapolare delle righe che hanno in una determinata colonna una X, che questa viene determinata da varie formule Se, ho provato con questa, ma non funziona, o meglio se la provo su un foglio bianco, funziona, ma quando la utilizzo su quella tabella, non funziona.

    codice:
    Sub Copia()
    Sheets("check settaggi").Select
    Ur = Range("A" & Rows.Count).End(xlUp).Row
    c = 11
    r = 1 
    riga = 1 
    Do Until r > Ur
        If Cells(r, c) = "X" Then 
            Range(r & ":" & r).Copy Destination:=Worksheets("script pcm").Range("A" & riga)
            riga = riga + 2
        End If
    r = r + 2
    Loop
    End Sub
    non credo di essermi spiegato, è abbastanza complesso (almeno per me).. e in realtà è solo l'inizio vorrei fare anche altre automazioni, in modo da non perdere tanto tempo ogni volta che cambio qualcosa, posso caricare il file di excel, se si come?

    grazie in anticipo per il tempo dedicatomi
    Ultima modifica di AntonioG; 24-06-2015 14:30  Motivo: Per il codice CODE non QUOTE

  2. #2
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862
    valetin;

    codice:
    Sub Copia()
    Sheets("check settaggi").Select
    Ur = Range("A" & Rows.Count).End(xlUp).Row
    c = 11
    r = 1 
    riga = 1 
    Do Until r > Ur
        If Cells(r, c) = "X" Then 
            Range(r & ":" & r).Copy Destination:=Worksheets("script pcm").Range("A" & riga)
            riga = riga + 2
        End If
    r = r + 2
    Loop
    End Sub
    Cosa volevi fare con questa istruzione?
    Se volevi copiare l'intero rigo allora:

    codice:
    Sub Copia()
        Dim ur As Long
        Dim c As Long
        Dim r As Long
        'Sheets("check settaggi").Select
        ur = Sheets("check settaggi").Range("A" & Rows.Count).End(xlUp).Row
        c = 11
        r = 1
        riga = 1
        Do Until r > ur
            If Cells(r, c) = "X" Then
                Sheets("check settaggi").Rows(r).Copy Destination:=Worksheets("script pcm").Range("A" & riga)
                riga = riga + 2
            End If
        r = r + 2
        Loop
    End Sub
    Se vuoi copiare invece un intervallo definito, esempio da colonna 4 ("D") a colonna 6 ("F")
    allora:
    codice:
    Sub Copia()
        Dim ur As Long
        Dim c As Long
        Dim r As Long
        'Sheets("check settaggi").Select
        ur = Sheets("check settaggi").Range("A" & Rows.Count).End(xlUp).Row
        c = 11
        r = 1
        riga = 1
        Do Until r > ur
            If Cells(r, c) = "X" Then
                Sheets("check settaggi").Rows(Cells(r, 4), Cells(r, 6)).Copy Destination:=Worksheets("script pcm").Range("A" & riga)
                riga = riga + 2
            End If
            r = r + 2
        Loop
    End Sub
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

  3. #3
    L'avatar di valetin
    valetin non è in linea Novello
    Post
    11
    Ciao Paolo,
    ti ringrazio per avermi risposto, ho provato la macro, ma mi da un errore sulla riga
    codice:
    If Cells(r, c) = "X" Then
    probabilmente, mi sono espresso male io, dovrei individuare nella colonna R dalla cella 3 se è presente una x (che viene determinata da funzioni SE), se appunto è presente una x nella cella esempio R56, mi deve copiare in un'altro foglio la cella corrispondente della cella R56 ovvero la D56

    grazie ancora

  4. #4
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862
    Quote Originariamente inviato da valetin Visualizza il messaggio
    Ciao Paolo,
    ti ringrazio per avermi risposto, ho provato la macro, ma mi da un errore sulla riga
    codice:
    If Cells(r, c) = "X" Then
    probabilmente, mi sono espresso male io, dovrei individuare nella colonna R dalla cella 3 se è presente una x (che viene determinata da funzioni SE), se appunto è presente una x nella cella esempio R56, mi deve copiare in un'altro foglio la cella corrispondente della cella R56 ovvero la D56

    grazie ancora
    Prova:
    codice:
    Sub CopiaFORMULAFORMATO()
        Dim ur As Long
        Dim c As Long
        Dim cC As Long
        Dim cCS As Long
        Dim r As Long
        Dim riga As Long
        ur = Sheets("check settaggi").Range("A" & Rows.Count).End(xlUp).Row
        c = 11 'colonna K
        cC = 4 'colonna D
        cCS = 1 'colonna sctittura A
        r = 1
        riga = 1
        Do Until r > ur
            If UCase(Sheets("check settaggi").Cells(r, c)) = "X" Then
                Sheets("check settaggi").Cells(r, cC).Copy Destination:=Sheets("script pcm").Cells(cCS, riga)
                riga = riga + 2
            End If
            r = r + 2
        Loop
    End Sub
    
    Sub Copia Valori()
        Dim ur As Long
        Dim c As Long
        Dim cC As Long
        Dim cCS As Long
        Dim r As Long
        Dim riga As Long
        ur = Sheets("check settaggi").Range("A" & Rows.Count).End(xlUp).Row
        c = 11 'colonna K
        cC = 4 'colonna D
        cCS = 1 'colonna sctittura A
        r = 1
        riga = 1
        Do Until r > ur
            If UCase(Sheets("check settaggi").Cells(r, c)) = "X" Then
                Sheets("script pcm").Cells(cCS, riga) = Sheets("check settaggi").Cells(r, cC)
                riga = riga + 2
            End If
            r = r + 2
        Loop
    End Sub
    La versione Sub Copia Valori, come da titolo, si limita a trasferire solo il valore non la formula ne il formato.
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

  5. #5
    L'avatar di valetin
    valetin non è in linea Novello
    Post
    11
    niente da fare , ma a me viene il dubbio che sia il mio file che ha qualcosa che non va.

    potrei allegare il file Excel, magari così vedi se c'è un problema, perché non capisco non è che mi restituisce un errore, semplicemente non fa niente, ho tolto le righe inutili e lasciato solo il minimo indispensabile.

    dunque, mi spiego anche perché credo che sia complicato, non tanto la prima parte, ma la seconda sicuramente si (per me), la macro dovrebbe prima di tutto nel foglio settaggi, nella colonna G se viene trovata una x (significa che su quella riga c'è un errore), copiare la cella A della colonna corrispondente nel foglio PCM, e finchqui credo che sia facile, anche se a me non è riuscito nemmeno questo.

    Il difficile arriva dopo.... nella colonna E sono indicati dei numeri, e nelle colonne B,C,D, sono indicati sostanzialmente 2 valori "YES" o "NO", praticamente la macro mi dovrebbe correggere le colonne B,C,D in funzione della colonna F in base a che numero è inserito(0,1,2,3):
    se c'è 0 deve essere NO NO NO
    se c'è 1 deve essere YES YES YES ( a condizione che nella colonna E ci sia scritto CDC)
    se c'è 1 deve essere YES YES NO (a condizione che nella colonna E ci sia scritto NO
    se c'è 2 deve essere YES NO YES
    se c'è 3 deve essere YES NO YES

    e mettere i valori corretti insieme alla cella A nel foglio PCM.

    e questo è quanto, credo che sia abbastanza difficile ma se ci riesci mi faresti un favore, più che altro tempo recuperato..io ho provato ma come hai visto ho avuto difficoltà solo a farli selezionare le righe che mi interessano.

    Se riesci a farlo sei un grande, grazie in anticipo, ci ho perso 1 mese e mezzo per cercare di farlo ma non ci sono riuscito.

    >>Link<<

  6. #6
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862
    valetin;
    Appena possibile lo guardo.
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

  7. #7
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862
    valetin;
    Non ho la possibilità, da questo terminale, di verificare dal tuo file.
    Da quello che scrivi il codice non funziona perché non hai usato correttamente l'indice colonna.
    Verifichi la presenza di "X" nella riga corretta ma nella colonna sbagliata.
    Ti allego un codice di prova leggi attentamente il manuale
    Comincia con 'Proprietà Cells'


    codice:
    Sub CopiaFor1()
        Dim ur As Long
        Dim idiR As Long
        Dim con As Long
        Dim riga As Long
        
        Dim cC As Long
        ur = Sheets("check settaggi").Range("A" & Rows.Count).End(xlUp).Row
        con = 7 'indice colonna G dove verificare la presenza di 'X'
        riga = 1
        For idiR = 1 To ur 'Step 2
            'Nel caso non volessi controllare tutti i righi puoi usare [Step incremento]
            'Facoltativa. Quantità di cui viene incrementato il contatore al compimento di ciascun ciclo.
            'Se non viene specificato,incremento assume per impostazione predefinita il valore 1.
            If UCase(Sheets("check settaggi").Cells(idiR, con)) = "X" Then
                Sheets("check settaggi").Cells(idiR, 1).Copy Destination:=Sheets("script pcm").Cells(riga, 1)
                'Nel caso non tiinteressi il formato puoi usare:
                Sheets("script pcm").Cells(riga, 1) = Sheets("check settaggi").Cells(idiR, 1)
                riga = riga + 2
                'Correggi in base alla colonna F=6
                'è 0 deve essere NO NO NO
                'è 1 deve essere YES YES YES ( a condizione che nella colonna E ci sia scritto CDC)
                'è 1 deve essere YES YES NO (a condizione che nella colonna E ci sia scritto NO
                'è 2 deve essere YES NO YES
                'è 3 deve essere YES NO YES
    
                Select Case Sheets("check settaggi").Cells(idiR, 6)
                    Case Is = 0
                        Sheets("check settaggi").Cells(idiR, 2) = "NO"
                        Sheets("check settaggi").Cells(idiR, 3) = "NO"
                        Sheets("check settaggi").Cells(idiR, 4) = "NO"
                    Case Is = 1
                        Sheets("check settaggi").Cells(idiR, 2) = "YES"
                        Sheets("check settaggi").Cells(idiR, 3) = "YES"
                        Select Case Sheets("check settaggi").Cells(idiR, 5)
                            Case Is = "CDC"
                                Sheets("check settaggi").Cells(idiR, 4) = "YES"
                            Case Is = "NO"
                                Sheets("check settaggi").Cells(idiR, 4) = "NO"
                        End Select
                    Case Is = 2
                        Sheets("check settaggi").Cells(idiR, 2) = "YES"
                        Sheets("check settaggi").Cells(idiR, 3) = "NO"
                        Sheets("check settaggi").Cells(idiR, 4) = "YES"
                    Case Is = 3
                        Sheets("check settaggi").Cells(idiR, 2) = "YES"
                        Sheets("check settaggi").Cells(idiR, 3) = "NO"
                        Sheets("check settaggi").Cells(idiR, 4) = "YES"
                End Select
            End If
        Next
    End Sub
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

  8. #8
    L'avatar di valetin
    valetin non è in linea Novello
    Post
    11
    innanzitutto ti ringrazio tanto per l'aiuto
    ho provato il tuo codice, ma continua a darmi errore su questa riga, e non capisco cosa ci sia di sbagliato,
    codice:
    ur = Sheets("check settaggi").Range("A" & Rows.Count).End(xlUp).Row
    mi restituisce l'errore run-time 9, indice non incluso nell'intervallo

    grazie ancora

  9. #9
    PaoloTalini non è in linea Scribacchino
    Luogo
    Pontedera (PI)
    Post
    862
    Quote Originariamente inviato da valetin Visualizza il messaggio
    innanzitutto ti ringrazio tanto per l'aiuto
    ho provato il tuo codice, ma continua a darmi errore su questa riga, e non capisco cosa ci sia di sbagliato,
    codice:
    ur = Sheets("check settaggi").Range("A" & Rows.Count).End(xlUp).Row
    mi restituisce l'errore run-time 9, indice non incluso nell'intervallo

    grazie ancora
    codice:
    Sheets("check settaggi").Cells(idiR, 1).Copy Destination:=Sheets("script pcm").Cells(riga, 1)
    Attenzione:
    Il codice che ti ho scritto prende ha riferimento i riferimenti che tu hai fornito con il tuo primo intervento.
    codice:
    Sheets("check settaggi")
    la scheda di nome 'check settaggi' dove sono i dati da analizzare.
    verifica il nome e se diverso modificalo

    codice:
    Sheets("script pcm")
    la scheda di nome 'script pcm' dove copio i dati che anno, in colonna G, il valore X .
    verifica il nome e se diverso modificalo

    Molto probabilmente il nome delle schede è errato.
    Ho provato il codice e funziona.
    P. Talini
    __________________________________________________ _______________________________________
    Tutti sanno che una cosa è impossibile da realizzare,
    finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

  10. #10
    L'avatar di valetin
    valetin non è in linea Novello
    Post
    11
    dunque, ho tolto la riga del formato, e adesso effettivamente mi funziona la prima parte, ovvero mi restituisce il contenuto della cella A se trova una X nella cella G, adesso però c'è da capire perché non mi visualizza le varie scelte Yes e No, che sarebbe la 2 parte della macro, praticamente mi deve far apparire i tre valori yes no yes o comunque tutte le combinazioni che ho detto sopra magari nelle 3 colonne accanto al risultato che viene ora sul foglio script pcm

    grazie ancora

+ Rispondi al Thread
Pagina 1 di 3 123 ultimoultimo

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi