COPIARE CON CONDIZIONE



  • COPIARE CON CONDIZIONE
    di Traniwebdesign data: 16/03/2015 15:15:08

    CIAO A TUTTI, h ola necessita di copiare determinati valori in un foglio, senza stare a selezionare e ordinare le colonne ogni volta...
    ho un file, dove ci sono delle iscrizioni.
    NEL FOGLIO "EXPORT" VOGLIO COPIARE DIRETTAMENTE I VALORI DEL FOGLIO "ISCRITTI"
    DEVO COPIARE SOLO SE SI VERIFICANO DETERMINATE CONDIZIONI
    1 - IL TIPO SIA CORTO
    2 - IL TIPO SI LUNGO
    3 - IL TIPO SIA MEDIO
    LE COLONNE CHE DEVO COPIARE SONO IN ORDINE
    CHIP
    COGNOME
    NOME
    NOME SOCIETA
    CODICE SOCIETA
    PET
    ho copiato ed incollato 2 atleti a caso per farvi capire cosa vorrei realizzare.
    se possibile poi questo foglio salvarlo direttamente su csv delimitato da ;
    Grazie mille a tutti.



  • di asdrubale87 data: 16/03/2015 15:22:42

    le condizioni che si devono verificare si verificano insieme (quindi la somma delle 3 condizioni) o vuoi 3 risultati, 1 per ogni condizione?? fammi capire meglio :D



  • di Traniwebdesign data: 16/03/2015 15:35:10

    no, praticamnete la tabella dovrebbe essere popolata con 3 righe....
    se ci sono 2 lunghi ed 1 medio..........3 righe di dati.
    se ci sono 10 lunghi, 1 medio,2 corti......13 righe
    ok ?



  • di asdrubale87 data: 17/03/2015 17:47:23

    ok, più o meno quello che fai con il filtro personalizzato, dove puoi inserire le 3 condizioni a te necessarie escludendo il resto, giusto?



  • di asdrubale87 data: 17/03/2015 18:00:19

    Questa bozza di codice funziona, ma si può migliorare, l'ho fatta in 2 secondo giusti prima di staccare dall'ufficio
     
    Sub Filtro_diverso_da()
    
      Selection.AutoFilter Field:=3, Criteria1:="<>AC", Operator:=xlAnd, _
            Criteria2:="<>AL"
        Range("A3").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        ActiveSheet.Next.Select
        Range("A1").Select
        ActiveSheet.Paste
        ActiveSheet.Previous.Select
        Range("D3").Select
        Range(Selection, Selection.End(xlDown)).Select
        Application.CutCopyMode = False
        Selection.Copy
        ActiveSheet.Next.Select
        Range("B1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveSheet.Previous.Select
        Range("E3").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        ActiveSheet.Next.Select
        Range("C1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveSheet.Previous.Select
        Range("I3").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        ActiveSheet.Next.Select
        Range("D1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveSheet.Previous.Select
        Range("J3").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        ActiveSheet.Next.Select
        Range("E1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        ActiveSheet.Previous.Select
        Range("B3").Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Copy
        ActiveSheet.Next.Select
        Range("F1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
    End Sub
    



  • di ninai (utente non iscritto) data: 17/03/2015 18:08:53

    ciao
    una soluzione poco "ergonomica" ma funziona (in excel 2010), in A2:
    =SE.ERRORE(INDICE(iscritti!A$4:A$100;AGGREGA(15;6;RIF.RIGA(iscritti!$C$4:$C$100)/((iscritti!$C$4:$C$100="corto")+(iscritti!$C$4:$C$100="lungo")+(iscritti!$C$4:$C$100="medio"))-3;RIGHE($A$1:$A1)));"")

    trascini in basso
    e se vuoi anche a destra. Te le restituisce tuttwe enell'ordine che si trovano nel foglio "iscritti". Poi vedi quali delle colonne vuoi tenere



  • di traniwebdesign (utente non iscritto) data: 17/03/2015 18:26:24

    ragazzi ho cosi tante risposte che non ci capisco una cippa.....
    grazie mille a tutti quelli che mi stanno aiutando..siete veramente grandiosi.
    allego il file cosi vedete quello che cerco io
    ho inserito correttamente i miei iscritti, con i numeri, ed i team e le categorie di appartenenza.
    ora se qualche anima pia me lo sistema gli offro una bella pizza ( sul serio )



  • di traniwebdesign (utente non iscritto) data: 17/03/2015 18:27:25

    ho riallegato il file con le categorie aggiunte e risistemate, cosi potete aiutarmi
    ancora un grazie infinite



  • di asdrubale87 data: 18/03/2015 16:40:14

    penso di aver risolto la tua questione, prova un pò questa macro.
    N.B.:
    categoria_1 = "ELMT"
    categoria_2 = "M4"
    categoria_3 = "M2"
    puoi cambiare i valori tra gli apici e mettere le categorie che ti servono, dato che non ho trovato "LUNGO" - "MEDIO" - "CORTO" nel file he hai caricato ne ho inserite 3 a caso, fammi sapere se questo era il tuo obiettivo, contando che si può ancora migliorare di molto, ad esempio inserendo una finestra che si apre appena lanci la macro e ti permette di inserire a mano 1/2/3/x categorie che vuoi copiare nel file export.
    N.B.2: prima di lanciare questa macro inserisci nel tuo file excel un foglio denominato Export
     
    Sub copia_se()
    
    Application.ScreenUpdating = False 'con questo comando fai in modo che non vedi i movimenti a video quando cambia fogli
    
    Dim categoria_1 As String
    Dim categoria_2 As String
    Dim categoria_3 As String
    Dim m_categoria As String
    'Dim cell As Object
    Dim incolla As Integer 'n° riga da dove iniziare ad incollare
    Dim riga As Integer 'n° riga dove cercare la categoria
    
    riga = 1
    categoria_1 = "ELMT"
    categoria_2 = "M4"
    categoria_3 = "M2"
    incolla = 0
        
        Sheets("Iscrizioni").Select
        Range("D" & riga & "").Select
        m_categoria = ActiveCell.FormulaR1C1
    
        Do Until m_categoria = ""
        'On Error Resume Next
        
        Sheets("Iscrizioni").Select
        Range("D" & riga & "").Select
        m_categoria = ActiveCell.FormulaR1C1
        
            If m_categoria = categoria_1 Or m_categoria = categoria_2 Or m_categoria = categoria_3 Then
            
                incolla = incolla + 1
                
                ActiveCell.EntireRow.Select
                Selection.Copy
                Sheets("Export").Select
                Range(" A" & incolla & "").Select
                ActiveSheet.Paste
                
                riga = riga + 1
                
            
            Else
            riga = riga + 1
            'incolla = incolla + 1
            'On Error Resume Next
        'Loop
        End If
        Loop
        
    incolla = 1
    riga = 1
        
    End Sub
    



  • di Traniwebdesign data: 18/03/2015 16:42:18

    perfetto. grazie mille ancora una volta a tutti.