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-20T11:00:59+00:00

    è A DIR POCO FENOMENALE!!  GRAZIE MILLE, MI HAI AGEVOLATO LA VITA!

    ANCORA GRAZIE!

    Ma grazie a te per l'entusiastico riscontro e buon lavoro.


    --

    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/

    piccolo ricontro:

    alle volte non mi taglia nei 43! mi spiego:

    quando faccio adatta colonne b e c, spesso la colonna b mi viene 49 o comunq maggiore di 43 anzichè 43 come mai?

    mi potresti spiegare nel modulo dove vado a settare la dimensione (43) e se posso modificarla di volta in volta!

    grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-09-20T10:20:29+00:00

    è A DIR POCO FENOMENALE!!  GRAZIE MILLE, MI HAI AGEVOLATO LA VITA!

    ANCORA GRAZIE!

    Ma grazie a te per l'entusiastico riscontro e buon lavoro.


    --

    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-20T07:59:17+00:00

    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

    è A DIR POCO FENOMENALE!!  GRAZIE MILLE, MI HAI AGEVOLATO LA VITA!

    ANCORA GRAZIE!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2010-09-17T07:12:05+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?

    La risposta è stata utile?

    0 commenti Nessun commento