Separazione Cognome...
 
Notifiche
Cancella tutti

La consultazione del forum è libera per tutti.

Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).

Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.

[Risolto] Separazione CognomeNome

5 Post
2 Utenti
0 Reactions
288 Visualizzazioni
emme
 emme
(@emme)
Post: 0
Moderatore
Avviatore di Topic
 

Salve a tutti. Questa volta ho io bisogno di voi.

Ho un elenco di COGNOMINomi importato in una colonna da un sito. COGNOMENome non sono separati e vorrei fare questo, scorrendo la colonna dal primo all'ultimo elemento;

Definisco un array: TxtSplit() As String;
Inserisco il testo COGNOMENome: TxtSplit = Split(Cells(R, C))
Scorro l'array fino a trovare il primo carattere minuscolo. Poi mi arrangerei.

Ma essendo COGNOMENome tutto attaccato i limiti dell'array sono = 0
Infatti in: For I = LBound(TxtSplit) To UBound(TxtSplit) esce subito perché LBound e UBound = 0.

Ovviamente direi, in quanto essendo una stringa continua non trova niente da splittare.

Per farla breve, dovrei individuare il primo carattere minuscolo e da lì mi ricostruisco il testo corretto.
Ma non riesco a trovare una soluzione per scorrere il testo e individuare se il carattere in esame è UCase o LCase.
Qualcuno ne sa di più? Grazie.

Versione di Excel
Sistema operativo
 
Postato : 06/04/2023 18:07
emme
 emme
(@emme)
Post: 0
Moderatore
Avviatore di Topic
 

Essendo impossibile inserire un testo in un array ho risolto così:

Sub CrtTest()
Dim Mns As String, SepTxt As String
C = 56 'colonna contenente COGNOMENome 
With ActiveSheet
LR = .Cells(.Rows.Count, C).End(xlUp).Row
End With
'
For R = 3 To LR
For T = 1 To Len(Cells(R, C))
Mns = Mid(Cells(R, C), T, 1)
Select Case Mns
Case Is = " ", "-" 'salta e passa a prox crt
Case Is = LCase(Mns)
SepTxt = Left(Cells(R, C), T - 2) & " "
SepTxt = SepTxt & Right(Cells(R, C), Len(Cells(R, 56)) - T + 2)

Exit For
End Select
Next
Next
End Sub

Non elegantissimo ma ci sono pochi nomi alla volta da scorrere (max 30) per cui è abbastanza soddisfacente. Sempre pronto a sistemare se qualcuno ha un'idea migliore. Lo posto nel caso possa servire a qualcuno.

 
Postato : 11/04/2023 10:22
Marius44
(@marius44)
Post: 0
Moderatore
 

Ciao

Prova col codice appresso. La macro si ferma quando incontra la prima lettera minuscola

Sub prova()
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  For j = 1 To Len(Cells(i, 1))
    If Asc(Mid(Cells(i, 1), j, 1)) > 90 Then Stop
  Next j
Next i
End Sub

Vedi se va bene così.

Ciao,
Mario

 
Postato : 11/04/2023 16:38
emme
 emme
(@emme)
Post: 0
Moderatore
Avviatore di Topic
 

Testato, funziona e molto meglio del mio dato che non devo anche scartare spazi o altri caratteri fuorvianti. A rilevare il minuscolo tramite Ascii non ci avrei mai pensato! Grazie grazie. 👍

 
Postato : 12/04/2023 11:08
Marius44
(@marius44)
Post: 0
Moderatore
 

Grazie di cosa? Se non ci si aiuta tra di noi ....

Sono veramente lieto di esserti stato d'aiuto.

Alla prossima. Ciao,

Mario

 
Postato : 12/04/2023 11:26
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy
     Scarica il nostro ebook gratuito     

Unisciti a oltre 35.000 professionisti
che hanno già scelto di semplificare il proprio lavoro
e aumentare la produttività con la nostra newsletter!

Scarica l’ebook con i
migliori trucchi e suggerimenti per Excel
selezionati per te da Excel Academy

Download