Ho un foglio Excel eccellente come questo;
Vorrei che la bcolonna venisse convertita in 3 nuove colonne, quindi ci sono due linee come URL1, Name, address, emaile URL3, Name, address, email.
Ho un foglio Excel eccellente come questo;
Vorrei che la bcolonna venisse convertita in 3 nuove colonne, quindi ci sono due linee come URL1, Name, address, emaile URL3, Name, address, email.
Risposte:
Con i dati nelle colonne A e B , in C1 inserire:
=OFFSET($A$1,3*(ROWS($1:1)-1),0)
e copia giù e in D1 inserisci:
=OFFSET($B$1,COLUMNS($A:A)-1+(ROW()-1)*3,0)
e copia ENTRAMBE su e giù:
Apri Visual Basic (premi Alt + F11 )
Inserisci un modulo e incolla il seguente codice in quel modulo
Sub Macro()
Dim i As Integer, j As Integer, k As Integer, LastRow As Integer
LastRow = Sheets(1).Range("A1").End(xlDown).Row
Sheets(2).Cells(1, 1).Value = Sheets(1).Cells(1, 1).Value
Sheets(2).Cells(1, 2).Value = Sheets(1).Cells(1, 2).Value
k = 1
j = 2
For i = 1 To LastRow
If Sheets(1).Range("A" & i).Value = Sheets(1).Range("A" & (i + 1)).Value Then
j = j + 1
Sheets(2).Cells(k, j).Value = Sheets(1).Cells(i + 1, 2).Value
Else
k = k + 1
Sheets(2).Cells(k, 1).Value = Sheets(1).Cells(i + 1, 1).Value
Sheets(2).Cells(k, 2).Value = Sheets(1).Cells(i + 1, 2).Value
j = 2
End If
Next i
End Sub
Questo codice verifica la somiglianza tra le celle nella prima colonna, se il contenuto della cella corrisponde quindi il valore nella cella accanto ad esso verrà copiato in un altro foglio. Se il contenuto della cella nella prima colonna non corrisponde, verrà considerato come punto dati successivo.