Probabilmente è più semplice a farsi che a dirsi.
Ti sarà sicuramente capitato di avere una lista di telemarketing nella quale uno o più contatti, magari, si ripetono più volte. Fin qui nulla di strano: crm4 in fase di importazione importerà quel contatto una sola volta.
Se, però, quei contatti si ripetessero perchè per ogni record sono state inserite informazioni diverse?
Facciamo un esempio pratico: in una lista di contatti per attività di vendita servizi di energia, un contatto è presente 3 volte con la stessa utenza ( quindi con lo stesso numero di telefono ) ma con 3 indirizzi di fornitura diversi. Per capirci meglio, dai un’occhiata sotto
Se tu importassi la lista così, il contatto verrebbe importato una sola volta perdendo 2 delle 3 informazioni importanti presenti nel file.
In questa guida ti spiegherò in che modo creare colonne aggiuntive per ogni informazione mantenendo un unico record.
Dovrai semplicemente aprire il tuo file excel contenente la lista e digitare sulla tastiera Alt+F11. Verrà aperta una finestra nella quale potrai inserire un codice in Visual Basic. Per farlo dovrai cliccare sull’opzione Inserisci e poi su Modulo. Il codice da inserire è il seguente (ti basterà fare copia e incolla):
Sub ConvertTable()
'Updateby Extendoffice
Dim xArr1 As Variant
Dim xArr2 As Variant
Dim InputRng As Range, OutRng As Range
Dim xRows As Long
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set OutRng = OutRng.Range("A1")
xArr1 = InputRng.Value
t = UBound(xArr1, 2): xRows = 1
With CreateObject("Scripting.Dictionary")
.CompareMode = 1
For i = 2 To UBound(xArr1, 1)
If Not .exists(xArr1(i, 1)) Then
xRows = xRows + 1: .Item(xArr1(i, 1)) = VBA.Array(xRows, t)
For ii = 1 To t
xArr1(xRows, ii) = xArr1(i, ii)
Next
Else
xArr2 = .Item(xArr1(i, 1))
If UBound(xArr1, 2) < xArr2(1) + t - 1 Then
ReDim Preserve xArr1(1 To UBound(xArr1, 1), 1 To xArr2(1) + t - 1)
For ii = 2 To t
xArr1(1, xArr2(1) + ii - 1) = xArr1(1, ii)
Next
End If
For ii = 2 To t
xArr1(xArr2(0), xArr2(1) + ii - 1) = xArr1(i, ii)
Next
xArr2(1) = xArr2(1) + t - 1: .Item(xArr1(i, 1)) = xArr2
End If
Next
End With
OutRng.Resize(xRows, UBound(xArr1, 2)).Value = xArr1
End Sub
Una volta incollato il codice, premi F5 sulla tastiera e ti verrà richiesto di selezionare l’intervallo dati da convertire:
Non appena lo avrai selezionato, premi su OK e ti verrà richiesto dove incollare il risultato della richiesta. Dovrai semplicemente cliccare su un campo qualsiasi di un foglio excel in modo da ottenere il risultato:
Avrai sicuramente notato che sono state create diverse colonne aggiuntive, ciascuna contenente le informazioni del cliente. Adesso elimina le due colonne aggiuntive contenenti il telefono del cliente, ed hai finito!