Separare stringhe



  • Separare stringhe
    di biss73 (utente non iscritto) data: 20/01/2015 10:16:37

    Salve a tutti,
    come al solito sono qui a chiedere aiuto, vi spiego il problema:
    ho delle stringhe importate da un file esterno su un foglio di lavoro (es. pippo compra il pane il latte - All. 3 ) tutte più o meno con lo stesso testo, dovrei separare la stringa in modo da ottenere:

    Col. A3 Col. B3 Col. C3
    Pippo compra il pane il latte - All. 3

    cioè separare il testo, da: - All. 3
    il fattore sempre presente in ogni stringa è : - All. 3
    il tutto per un numero non definito di righe, se qualcuno a già una macro che faccia più o meno questo ( in modo da prendere spunto per adattarla alle mie esigenza ) è ben accetta visto la mia scarsa esperienza in programmazione
    ringrazio anticipatamente
    Saluti



  • di Lucas87 data: 20/01/2015 10:35:52

    Ciao
    Se ti accontenti di una formula, quella sotto toglie gli ultimi 9 caratteri
     
    =SINISTRA(A1;LUNGHEZZA(A1)-9)



  • di biss73 (utente non iscritto) data: 20/01/2015 11:22:41

    ciao, grazie per l'interessamento ma purtroppo non è quello che mi serve, nel mio caso quello che serve a me è separare la stringa in modo tale da ottenere il testo su una colonna
    Col.A3 pippo ecc ecc
    Col.B3 -
    Col. C3 All. 3
    ecc. ecc.. Grazie comunque
    Saluti



  • di Lucas87 data: 20/01/2015 11:56:56

    Così?
     
    stri = Range("a1")
    Range("a3") = Split(stri, " - ")(0)
    Range("b3") = " - "
    Range("c3") = Split(stri, " - ")(1)



  • di biss73 (utente non iscritto) data: 20/01/2015 12:28:52

    Ciao, Grazie Lucas perfetto è proprio quello che mi serviva
    ti chiedo solo un ultima cosa ( se posso)
    avendo le stringhe sulla colonna A per un numero non definito di righe
    è possibile fare in modo che scorri tutte le righe finche ne trova una vuota e mi riporti la stringa separata a partire dalla colonna C3?
    Grazie



  • di Lucas87 data: 20/01/2015 12:46:27

    Scusa ma allora bastava la formula che ti ho dato all'inizio
    In C3 =SINISTRA(A3;LUNGHEZZA(A1)-9) scrive pippo......
    In D3 scrivi -
    In E3 =DESTRA(A3;9) scrive All. 3
    Trascina fino alla riga che interessa

    Se proprio vuoi una macro, vedi quella sotto
     
    k=range("a" & rows.count).end(xlup).row
    for i=3 to k
    cells(i,3) = Split(cells(i,1), " - ")(0)
    cells(i,4)= " - "
    cells(i,5)= Split(cells(i,1), " - ")(1)
    next



  • di biss73 (utente non iscritto) data: 20/01/2015 12:51:57

    Ciao, Perfetto grazie ci ero arrivato anche io, forse non è il modo più elegante per scrivere un codice il mio
    pero funziona lo posto lo stesso Gradirei un parere di come l'ho scritto ( specie le critiche)
    Grazie ancora Gentilissimi come sempre
    Saluti
     
    Sub DIVIDI()
    Dim uriga1 As Long
    
    Sheets("Foglio1").Activate
    uriga1 = Range("A" & Rows.Count).End(xlUp).Row
    
    If Cells(1, 1) >= 1 Then
      For x = 1 To uriga1 ' parto dalla riga n° 1 fino all'ultima attiva
    
      stri = Range(Cells(x, 1), (Cells(x, 1)))
      Range(Cells(x, 2), (Cells(x, 2))) = Split(stri, " - ")(0)
      Range(Cells(x, 3), (Cells(x, 3))) = " - "
      Range(Cells(x, 4), (Cells(x, 4))) = Split(stri, " - ")(1)
      Next
    End If
    
    End Sub
    



  • di Lucas87 data: 20/01/2015 14:08:32

    Sheets("Foglio1").Activate ai fini del codice non è utile. Non serve selezionare un foglio/cella per poterci lavorare.
    For x = 1 hai detto che i dati partono da A3, quindi dalla riga 3...non serve a nulla lavorare sulla riga 1 e 2
    Range(Cells(x, 1), (Cells(x, 1))) corrisponde a un intervallo di celle formato da una sola cella...non ha senso...basta usare cells(x,1)



  • di Lucas87 data: 20/01/2015 16:11:57

    Altra cosa:
    la variabile stri l'avevo usata perchè avevi detto di voler riportare il risultato in colonna A,B e C. Se il valore della colonna A rimane, allora non serve la variabile, puoi fare riferimento direttamente alla cella con cells(x,1)

    Range("A" & Rows.Count).End(xlUp).Row indica l'ultima cella con valori a partire dal basso verso l'alto.



  • di Biss73 (utente non iscritto) data: 20/01/2015 16:34:21

    Ciao, grazie per le delucidazioni ne farò tesoro la prossima volta
    Saluti