Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
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)
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)