|
Rank: Member
Iscritto dal : 10/26/2004 Posts: 10
|
Salve a tutti. Ho incollato in excel un file di testo contenente svariate centinaia di contatti del cellulare. Il mio problema è che ha inserito nella stessa colonna (A) tutti i contatti di conseguenza mi trovo nella riga 1 il nominativo nella 2 il numero cellulare, nella 3 il telefono di casa e via cosi. mi servirebbe invece avere sulla stessa riga di ogni nominativo i suoi numeri telefonici, premetto che non tutti i contatti hanno lo stesso numero di righe occupate in quanto varia a seconda di quanti recapiti telefonici ha memorizzati. vi posto un esempio: questo è l'incolonnamento attuale cella A1 nome e cognome cella A2 nr. telefono 1° cellulare cella A3 nr. telefono 2° cellulare cella A4 nr. telefono abitazione cella A5 nome e cognome cella A6 nr. telefono cellulare cella A7 nome e cognome cella A8 nr. telefono 2° cellulare cella A9 nr. telefono abitazione. A me servirebbe così cella A1 nome e cognome - cella B1 nr. telefono 1° cellulare - cella C1 nr. telefono 2° cellulare ecc..... Spero di essere stato chiaro con l'esempio. Vi ringrazio in anticipo per l'aiuto che sicuramente mi darete. A presto.
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve hai due possibilità: 1° selezioni blocco per blocco i tuoi contatti copia>incolla speciale>trasponi 2° usando una macro che lo fa per te come quella che vedi qui sotto: Code: Sub test() riga = 1 riga1 = 1 uriga = Range("a1").End(xlDown).Row For Each cl In Range("a2:a" & uriga) If Not IsNumeric(cl) Then riga2 = cl.Row - 1 Range("a" & riga1 & ":a" & riga2).Copy Cells(riga, 4).PasteSpecial Paste:=xlAll, Transpose:=True riga1 = riga2 + 1 riga = riga + 1 End If Next Application.CutCopyMode = False End Sub
La macro presuppone che il tuo elenco inizi dalla cella A1 e che i nimeri di telefono siano in formato numerico. saluti Giap
|
|
Rank: Member
Iscritto dal : 10/26/2004 Posts: 10
|
Giap ti sono molto grato per la soluzione che mi hai postato in tempo record. Purtroppo il problema non l’ho risolto, in quanto (colpa mia) non sono stato molto chiaro. I valori in colonna A sono tutti di formato testo e pertanto la macro che gentilmente mi hai postato non funziona. Di seguito posto una parte dei quasi 600 contatti esattamente come risultano in colonna A , preciso inoltre che ogni contatto inizia con N: e finisce con END:VCARD (per questioni di privacy ho sostitutito delle lettere e numeri con delle X): COLONNA A N:;Cxaxxsa;;; TEL:07073XXXXX TEL;HOME:0707XXXXXX END:VCARD N:;Alberto;zaxxxxxxxxxxe;;; TEL;WORK:070663XXX TEL;CELL:+39339XXXXXXXX TEL;CELL:3396XXXXXXXX END:VCARD N:Alxxda;Paolo;;; TEL;CELL:33580XXXXXX TEL;CELL;HOME:346XXXXXXXX TEL;HOME:0807XXXXX END:VCARD N:;Antonella; Fxxroxxmi;;; TEL;CELL:3496XXXXXXX TEL;CELL;WORK:333XXXXXXX TEL;HOME:016 XXXXXXX END:VCARD N:CANxxxNA;Anxxla;;; TEL;CELL:348 XXXXXXX TEL;CELL:328 XXXXXXX END:VCARD N:Cxaxxrxa;Gixxeppe;;; TEL;CELL:328 XXXXXXX TEL;CELL;HOME:348 XXXXXXX TEL;HOME:070 XXXXXXX TEL;HOME:070 XXXXXXX TEL;WORK:031XXXXXXX END:VCARD N:CAxxxxxIA;RAxxxELE;;; TEL;CELL:347 XXXXXXX END:VCARD ECC…. ECC……
Un grandissimo Grazie per l’aiuto che sicuramente mi darete. Saluti a presto.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve prova con questa Code: Sub test() riga = 1 uriga = Range("a1").End(xlDown).Row For Each cl In Range("a1:a" & uriga) If Left(cl.Value, 1) = "N" Then riga1 = cl.Row End If If Left(cl.Value, 3) = "TEL" Then riga2 = cl.Row End If If Left(cl.Value, 3) = "END" Then Range("a" & riga1 & ":a" & riga2).Copy Cells(riga, 4).PasteSpecial Paste:=xlAll, Transpose:=True riga = riga + 1 End If Next Application.CutCopyMode = False End Sub
saluti Giap
|
|
Rank: Member
Iscritto dal : 10/26/2004 Posts: 10
|
Giap ti ringrazio veramente di cuore per avermi risolto il problema quasi in tempo reale, funziona alla perfezione. Sei veramente un grande. Grazie di nuovo saluti Franco.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve grazie a te per il riscontro saluti Giap
|
|
Guest |