taglio di una stringa excel con separatori personalizzati

Anonimo
2010-07-07T11:01:43+00:00

salve,

Ho bisogno di una funzione che mi tagli le stringa piu lunghe di 47(334pxl) con un criterio pero' nel senso che non dve tagliare a caso ma bensì dopo uno spazio, in modo tale da non far perdere significato.

es:

A                                                                                 

ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI   ARCHITETTI

B

voglio che mi tagli da ingegneri in poi!

il problema è dovuto alla stampante che si blocca se do' indirizzi maggiodi di 334 pxl

è una formula che dovrei fare per circa 12000 indirizzi

Help!

Grazie.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2010-09-17T19:19:51+00:00

se minore di 43 non dobbiamo fare nulla, dobbiamo lasciarlo così com'è!

dove finisce il testo della cella tagliato? in b1 e c1?

Sì. Cioè, il testo di quanto contenuto in A(n) viene messo in B(n) (max primi 43 caratteri) e C(n) (caratteri successivi). Ma hai provato?


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

mi da errore run time '9' poi mi dice fine o debug, se faccio debug mi evidenzia in giallo questa riga del codice:     Set sh = ThisWorkbook.Worksheets("Foglio1") 

edit:

ho capito il problema era il nome del foglio! modificato e funziona ma alcuni indirizza fa una cosa del genere:

a1=

PIZZERIA LA FERRIERA AGRITURISMO LA FERRIERA DI CEPPAROTTI MARIA TER

b1=

PIZZERIA LA FERRIERA AGRITURISMO LA DI TER

c1=

FERRIERA CEPPAROTTI MARIA

 

come mai non splitta bene? altri indirizzi sono ok!

si potrebbe aggiungere una funzione che porta in b1 gli indirizzi con caratteri minori di 43?

Prova così, sostituendo la precedente:

Public Sub m()

    Dim sh As Worksheet

    Dim lUltRiga As Long

    Dim lng As Long

    Dim la As Long

    Dim sa() As String

    Dim s1 As String

    Dim s2 As String

    Dim bln As Boolean

    Application.ScreenUpdating = False

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        lUltRiga = .Range("A" & .Rows.Count).End(xlUp).Row

        For lng = 1 To lUltRiga

            If Len(.Cells(lng, 1).Value) > 43 Then

                s1 = ""

                s2 = ""

                bln = False

                sa = Split(.Cells(lng, 1).Value, " ")

                For la = 0 To UBound(sa())

                    If Len(s1 & sa(la)) - 1 < 43 And bln = False Then

                        s1 = s1 & sa(la) & " "

                    Else

                        bln = True

                        s2 = s2 & sa(la) & " "

                    End If

                Next

                .Cells(lng, 2).Value = Trim(s1)

                .Cells(lng, 3).Value = Trim(s2)

            Else

                .Cells(lng, 2) = .Cells(lng, 1).Value

            End If

        Next

    End With

    Application.ScreenUpdating = True

    Set sh = Nothing

End Sub

L'errore che riscontri:

*mi da errore run time '9' poi mi dice fine o debug, se faccio debug mi evidenzia in giallo questa riga del codice:     Set sh = ThisWorkbook.Worksheets("Foglio1") *

è dato dal fatto che forse non hai il Foglio1. Sostituisci Foglio1 con il nome del foglio dove hai l'elenco(sempre fra virgolette). Scusa per il ritardo nelle risposte, ma sono un  po' occupato. Grazie per l'attenzione e fai sapere se hai risolto.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

49 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-09-15T22:39:19+00:00

    Quello che chiedi non è molto chiaro. Posso, nel caso che proponi, ricorrere ad una ormula con 2 funzioni per eliminare dopo il 47 carattere tutto ciò che si trova dopo ad uno spazio:

    A1: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI   ARCHITETTI

    B1: =SINISTRA(C11;TROVA(" ";C11;47))

    e in B1 mi troverò: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI. Tutto questo però non agisce sulla stampante. La stampante stampa quello che trova sul foglio, quindi devo intervenire *prima* che i dati le siano inviati. Altra soluzione potrebbe essere quella di andare a capo nella cella. Puoi gentilmente spiegare meglio le tue esigenze? Grazie. 


    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    perfetto è quello che mi serve!! pero' ho bisogno anche dell'altra parte dell'indirizzo tagliata!

    a1:ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI

    b1:ARCHITETTI

    come faccio?

    alla stampante basta dare il foglio con questi parametri

    A1: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI ARCHITETTI

    B1: =SINISTRA(C11;TROVA(" ";C11;47))

    C1: =STRINGA.ESTRAI(A1;47;LUNGHEZZA(A1))

    In b1 troverò: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI  e in C1 troverò: ARCHITETTI


    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    eccomi tornato al lavoro con i soliti problemi:

    qui le celle da tagliare come dicevo:

     

    nella colonna A1:

    scuola secondaria di II grado

    scuola secondaria di II grado

    IST PROF PER I SERVIZI ALBERGHIERI E RISTORAZIONE

    scuola secondaria di II grado

    IST PROF PER I SERVIZI ALBERGHIERI E RISTORAZIONE

    scuola secondaria di II grado

    scuola secondaria di II grado

    quindi io devo tagliare quei nominativi che con arial 10 superano i 43 caratteri e splittarli in 2 celle.

    es:

    a1=IST PROF PER I SERVIZI

    a2=ALBERGHIERI E RISTORAZIONE

    da considerare che la funzione voluta deve lasciar perdere gli indirizzi con lunghezza caratteri minore di 43.

    è possibile avere una funzione del genere?

    grazie mille!

     

    Con una macro risolviamo in due minuti. Fai sapere se ti va l'idea. Però devi spiegare meglio, perchè se in A1 abbiamo il testo, possiamo *splittarlo* ovunque ma preferibilmente non nella stessa coloanna.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    ah ok perfetto non mi serve nella stessa colonna anzi se il testo è in a1 mi tornerebbe comodo splittarlo in 2 parti una in b1 e una in c1 entrambe le parti non devono superare i 43 caratteri ovviamente..grazie mille speriamo di risolvere, sono molto fiducioso in te!

    P.s.

    Non ho mai usato una macro!

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-09-13T10:44:09+00:00

    Quello che chiedi non è molto chiaro. Posso, nel caso che proponi, ricorrere ad una ormula con 2 funzioni per eliminare dopo il 47 carattere tutto ciò che si trova dopo ad uno spazio:

    A1: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI   ARCHITETTI

    B1: =SINISTRA(C11;TROVA(" ";C11;47))

    e in B1 mi troverò: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI. Tutto questo però non agisce sulla stampante. La stampante stampa quello che trova sul foglio, quindi devo intervenire *prima* che i dati le siano inviati. Altra soluzione potrebbe essere quella di andare a capo nella cella. Puoi gentilmente spiegare meglio le tue esigenze? Grazie. 


    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    perfetto è quello che mi serve!! pero' ho bisogno anche dell'altra parte dell'indirizzo tagliata!

    a1:ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI

    b1:ARCHITETTI

    come faccio?

    alla stampante basta dare il foglio con questi parametri

    A1: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI ARCHITETTI

    B1: =SINISTRA(C11;TROVA(" ";C11;47))

    C1: =STRINGA.ESTRAI(A1;47;LUNGHEZZA(A1))

    In b1 troverò: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI  e in C1 troverò: ARCHITETTI


    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    eccomi tornato al lavoro con i soliti problemi:

    qui le celle da tagliare come dicevo:

     

    nella colonna A1:

    scuola secondaria di II grado

    scuola secondaria di II grado

    IST PROF PER I SERVIZI ALBERGHIERI E RISTORAZIONE

    scuola secondaria di II grado

    IST PROF PER I SERVIZI ALBERGHIERI E RISTORAZIONE

    scuola secondaria di II grado

    scuola secondaria di II grado

    quindi io devo tagliare quei nominativi che con arial 10 superano i 43 caratteri e splittarli in 2 celle.

    es:

    a1=IST PROF PER I SERVIZI

    a2=ALBERGHIERI E RISTORAZIONE

    da considerare che la funzione voluta deve lasciar perdere gli indirizzi con lunghezza caratteri minore di 43.

    è possibile avere una funzione del genere?

    grazie mille!

     

    Con una macro risolviamo in due minuti. Fai sapere se ti va l'idea. Però devi spiegare meglio, perchè se in A1 abbiamo il testo, possiamo *splittarlo* ovunque ma preferibilmente non nella stessa coloanna.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-09-13T10:29:34+00:00

    Quello che chiedi non è molto chiaro. Posso, nel caso che proponi, ricorrere ad una ormula con 2 funzioni per eliminare dopo il 47 carattere tutto ciò che si trova dopo ad uno spazio:

    A1: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI   ARCHITETTI

    B1: =SINISTRA(C11;TROVA(" ";C11;47))

    e in B1 mi troverò: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI. Tutto questo però non agisce sulla stampante. La stampante stampa quello che trova sul foglio, quindi devo intervenire *prima* che i dati le siano inviati. Altra soluzione potrebbe essere quella di andare a capo nella cella. Puoi gentilmente spiegare meglio le tue esigenze? Grazie. 


    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    perfetto è quello che mi serve!! pero' ho bisogno anche dell'altra parte dell'indirizzo tagliata!

    a1:ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI

    b1:ARCHITETTI

    come faccio?

    alla stampante basta dare il foglio con questi parametri

    A1: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI ARCHITETTI

    B1: =SINISTRA(C11;TROVA(" ";C11;47))

    C1: =STRINGA.ESTRAI(A1;47;LUNGHEZZA(A1))

    In b1 troverò: ADOLFO COLOMBO  PRESIDENTE COLLEGIO INGEGNERI  e in C1 troverò: ARCHITETTI


    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    eccomi tornato al lavoro con i soliti problemi:

    qui le celle da tagliare come dicevo:

    nella colonna A1:

    scuola secondaria di II grado

    scuola secondaria di II grado

    IST PROF PER I SERVIZI ALBERGHIERI E RISTORAZIONE

    scuola secondaria di II grado

    IST PROF PER I SERVIZI ALBERGHIERI E RISTORAZIONE

    scuola secondaria di II grado

    scuola secondaria di II grado

    quindi io devo tagliare quei nominativi che con arial 10 superano i 43 caratteri e splittarli in 2 celle.

    es:

    a1=IST PROF PER I SERVIZI

    a2=ALBERGHIERI E RISTORAZIONE

    da considerare che la funzione voluta deve lasciar perdere gli indirizzi con lunghezza caratteri minore di 43.

    è possibile avere una funzione del genere?

    grazie mille!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-07-19T22:37:52+00:00

    mi spiego meglio:

    ricevo in xls migliaia di indirizzi che devono essere elaborati da un programma in .dbf

    io al programma devo dare il file .dbf che mi ricavo dall'excel con dei campi (cognome,nome via, citta cap e provincia)

    se in c1 e d1 ho la colonna cognome e nome (ossia l'indirizzo che ho tagliato in 2 parti) devo avere anche quelli piu' piccoli di 47 o 43 perchè a quanto pare la formula funziona solo su quelli maggiori e non minori..

    quindi ho bisogno di una funzione dinamica da poter cambiare al volo da 47 a 43 e che lavori riportandomi anche gli indirrizzi che hanno solo: Rossi o Bianchi (cognome corto)

    Puoi postare cosa hai esattamente nelle celle(più casi con più lunghezze) e cosa devi ottenere. Io forse non ho ancora capito bene. Scusa e grazie.


    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    ti ringrazio per la disponibilità...

    ora sono a casa e non ho i fogli di lavoro..

    appena torno al lavoro ti scrivo..

    La risposta è stata utile?

    0 commenti Nessun commento