Dati excel in un csv



  • Dati excel in un csv
    di Toreandre (utente non iscritto) data: 05/11/2014 12:29:56

    Salve a tutti,

    ho un file excel molto grande in cui dovrei creare del codice per estrapolare dei dati:

    Devo tramite codice identificare delle parole (ad esempio lavoro presso : ) e prendere tutti i dati che ci sono dopo (circa 20 caratteri sulla linea o sulla linea successiva) e salvarli in un altro file excel o csv.

    Credo che sia fattibile con VBA , ho letto varie discussioni e non ho trovato un codice adatto.

    Chi mi potrebbe indicare qualche soluzione ?
    Grazie



  • di lepat (utente non iscritto) data: 05/11/2014 14:47:33

    allega un file di esempio di dimensioni contenute con i dati ed il risultato desiderato sul secondo foglio



  • di Toreandre (utente non iscritto) data: 05/11/2014 19:03:37

    Ti ho allegato un esempio.
    Io nella ricerca interna , ho necessita di sapere se una persona che vuole lavorare con noi , non abbia già lavorato ad esempio con Adecco, e sapere per quale società ha lavorato.

    Quindi vorrei mettere come query di ricerca , adecco , ed in un nuovo file , copiare tutte le righe ( o 1 o piu' di 1 ) dove compare la scritta adecco.

    Fammi sapere se ti serve altro e grazie x la risposta




  • di lepat (utente non iscritto) data: 05/11/2014 19:09:23

    l'avevo detto già cosa mi serviva, non vedo il risultato desiderato



  • di Toreandre (utente non iscritto) data: 05/11/2014 19:11:11

    Ma ho allegato il file !
    Lo vedo sopra su allegati ... tu non lo vedi?



  • di lepat (utente non iscritto) data: 05/11/2014 20:31:11

    lo vedo, ma qual'era la mia richiesta ? io vedo un solo foglio.



  • di Toreandre (utente non iscritto) data: 06/11/2014 11:29:50

    Hai ragione, ho caricato un zip , esempio con i file richiesti.

    Grazie



  • di Grograman (utente non iscritto) data: 06/11/2014 11:54:59

    Quel file è la morte di excel



  • di lepat (utente non iscritto) data: 06/11/2014 12:21:49

    inserisci un altro foglio nel documento e prova questa macro
     
    Sub a()
    Sheets("Table 1").Select
    aname = "Adecco"
    drow = 2
    With ActiveSheet.UsedRange
        Set c = .Find(aname, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Row
            Sheets(2).Cells(drow, 1) = .Cells(firstAddress, 1)
            Sheets(2).Cells(drow + 1, 1) = .Cells(firstAddress + 1, 1)
            drow = drow + 2
            Do
              Set c = .FindNext(c)
              crow = c.Row
              Sheets(2).Cells(drow, 1) = .Cells(crow, 1)
              Sheets(2).Cells(drow + 1, 1) = .Cells(crow + 1, 1)
              drow = drow + 2
            Loop While Not c Is Nothing And c.Row <> firstAddress
        End If
      End With
    End Sub
    


  • Pulizia dati
    di Toreandre (utente non iscritto) data: 06/11/2014 16:59:20

    Grande !! funziona...

    adesso provo a fartela piu' complessa.... per avere un output piu' pulito, invece che copiare la riga x intero... vorrei un po pulirla.
    Se trovo numeri non li copio, o se trovo parole (variabili) non le copie.

    Come posso andare ad analizzare parola x parola nella riga e creare un If ?

    Grazie



  • di lepat (utente non iscritto) data: 06/11/2014 17:14:01

    non ho capito, è tanto semplice allegare un esempio, fallo.


  • pulizia risultato
    di Toreandre (utente non iscritto) data: 06/11/2014 17:24:08

    Ti ho allegato il file che ho fatto con la tua macro.
    Nel secondo foglio ho il risultato di quello richiesto.

    Vorrei pulire questi dati che ho ricopiato e quindi ad esempio cancellare tutte le date , cancellare tutte delle parole chiave ( ad esempio "corso" , "per" )

    Questa pulizia la devo fare prima nella macro , quindi passare solo valori che vorrei , o la posso eseguire dopo ?

    Ad esempio nelle prime righe trovo questi dati :

    09/2013 - 12/2013 Roma Procter & Gamble srl (Adecco)
    Livello: Impiegato
    9 Settembre 2013 – 31 Dicembre 2013: Adecco per Procter & Gamble SRL Viale Giorgio Ribotta, 11 – 00144 Roma

    Vorrei togliere tutte le date , la parola "livello" ed altre parole.

    Spero di esser stato chiaro e grazie x la pazienza



  • di lepat (utente non iscritto) data: 06/11/2014 17:42:11

    fai prima a dirmi cosa vuoi lasciare


  • Cosa lasciare
    di Toreandre (utente non iscritto) data: 06/11/2014 17:43:43

    Bhe, io vorrei intercettare solo il nome dell'azienda , ma diventa difficile perchè sono tutti nomi diversi e non so in che posizione la persona la mette quando compila il curriculum.

    Quindi posso andare a pulire il file levando le parole comuni.



  • di lepat (utente non iscritto) data: 06/11/2014 18:01:43

    prova così
     
    Sub elimina()
    Sheets(2).Select
     parola = InputBox("Parola da eliminare ")
        Cells.Replace What:=parola, Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    
    End Sub



  • di Grograman (utente non iscritto) data: 07/11/2014 08:57:49

    cit: "Bhe, io vorrei intercettare solo il nome dell'azienda , ma diventa difficile perchè sono tutti nomi diversi e non so in che posizione la persona la mette quando compila il curriculum. "


    Ecco perchè ho detto che quel file è la morte di excel....

    Compilato così tanto valeva usare word, o notepad.
    Il vantagigo di excel è che potendo orientari per coordinate cartesiane se gli fai mettere "AZIENDA" in una cella, eventualmente a blocchi di X righe per 3-4 esperienze lavorative in modo che per esempio alla riga 10 ci sia l'ultima azienda, alla 15 la penultima, alla 20 la terzultima, saprai sempre dove andare a pescare quel dato!


  • File Input
    di Toreandre (utente non iscritto) data: 07/11/2014 16:11:00

    Grograman ... tu hai perfettamente ragione , ma se il file di input è strutturato cosi da x persone , non puoi identificare ciò che viene scritto.

    lepat , grazie mille x la risposta, provo il codice e ti dico



  • Elimina parole
    di Toreandre (utente non iscritto) data: 07/11/2014 16:15:02

    Ho provato il codice che mi hai dato , ma se eseguo la macro , mi apre una inputbox , con il nome della parola che voglio togliere ed una textbox dove inserire il valore.

    ho sbagliato qualcosa io ?



  • di lepat (utente non iscritto) data: 07/11/2014 19:20:55

    non ti capisco


  • modifiche codice
    di Toreandre (utente non iscritto) data: 07/11/2014 23:33:44

    Ti risposto il codice che mi hai messo , ed ho messo i commenti dove vorrei modificare il codice.
    Spero di esser stato più chiaro

    Grazie mille ancora
     
    Sub a()
    Sheets("Table 1").Select
    aname = "Adecco"
    drow = 2
    With ActiveSheet.UsedRange
        Set c = .Find(aname, LookIn:=xlValues)
        If Not c Is Nothing Then
    	'se trovo parole chiave (ad esempio "corso" ) all'interno delle righe selezionate , non mi copiare la stringa
    	firstAddress = c.Row
            Sheets(2).Cells(drow, 1) = .Cells(firstAddress, 1)
            Sheets(2).Cells(drow + 1, 1) = .Cells(firstAddress + 1, 1)
            drow = drow + 2
            Do
              Set c = .FindNext(c)
              crow = c.Row
              Sheets(2).Cells(drow, 1) = .Cells(crow, 1)
              Sheets(2).Cells(drow + 1, 1) = .Cells(crow + 1, 1)
              drow = drow + 2
            Loop While Not c Is Nothing And c.Row <> firstAddress
        End If
      End With
    End Sub
    
    
    Sub elimina()
    Sheets(2).Select
     parola = InputBox("Parola da eliminare ")
     ' non vorrei mettere un inputbox con la parola da cercare , ma una variabile che contenga già alcune parole con separatore, se possibile
        Cells.Replace What:=parola, Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    
    End Sub



  • di lepat (utente non iscritto) data: 08/11/2014 08:19:01

    prova questa
     
    Sub elimina()
    Sheets(2).Select
    parole = Array("Assunta", "Esperienza", " Agenzia")
    For i = 0 To UBound(parole)
        Cells.Replace What:=parole(i), Replacement:="", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
    Next
    End Sub


  • Finito
    di Toreandre (utente non iscritto) data: 11/11/2014 10:47:11

    Grazie mille per la consulenza !