Tôi có một bảng excel dữ liệu như thế này;
Tôi muốn b
cột được chuyển đổi thành 3 cột mới, vì vậy có hai dòng like URL1, Name, address, email
và URL3, Name, address, email
.
Tôi có một bảng excel dữ liệu như thế này;
Tôi muốn b
cột được chuyển đổi thành 3 cột mới, vì vậy có hai dòng like URL1, Name, address, email
và URL3, Name, address, email
.
Câu trả lời:
Với dữ liệu trong cột A và B , trong C1, nhập:
=OFFSET($A$1,3*(ROWS($1:1)-1),0)
và sao chép xuống và trong D1 nhập:
=OFFSET($B$1,COLUMNS($A:A)-1+(ROW()-1)*3,0)
và sao chép cả hai bên và xuống:
Mở Visual Basic (Nhấn Alt + F11 )
Chèn Mô-đun và dán mã sau vào Mô-đun đó
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
Mã này kiểm tra sự giống nhau giữa các ô trong cột đầu tiên, nếu nội dung ô khớp với giá trị trong ô bên cạnh nó sẽ được sao chép sang một trang tính khác. Nếu nội dung ô trong cột đầu tiên không khớp thì nó sẽ được coi là điểm dữ liệu tiếp theo.