Câu trả lời:
Tôi không đứng đầu 'đầu tôi biết một cách để làm điều đó cho TẤT CẢ chúng, nhưng bạn có thể dán như thế này ...
Điều đó sẽ làm điều đó cho bộ THAT của a / b / c / d. Tôi biết đó không phải là một câu trả lời đầy đủ, nhưng nếu không có quá nhiều trong số này thì điều đó có thể hoạt động.
Đây là một macro nhanh chóng sẽ thực hiện chuyển đổi cho bạn, nếu bạn muốn. Chỉ cần đặt mọi thứ vào cột "A", và nó sẽ đặt tất cả vào B1, C1, D1, v.v ... Hàng được phân định bằng khoảng trắng và hai khoảng trắng trong một hàng có nghĩa là "dừng".
Đã sửa, nên hoạt động ok cho tối đa 255 cột. và vâng, bạn có thể sử dụng cài đặt Transpose trong hàm pastespecial trong vba, nhưng điều đó chỉ làm cho mã phức tạp hơn cho cùng một kết quả, vì vậy tôi giữ nó đơn giản
Sub Macro1()
lastBlank = False
col = 2 'B
row = 1
For Each cell In Range("A:A")
v = Trim(CStr(cell))
If v = "" Then
If lastBlank = True Then Exit For
lastBlank = True
col = 2 'B
row = row + 1
Else
Cells(row, col) = v
col = col + 1
lastBlank = False
End If
Next
End Sub
Nếu bất cứ ai vẫn đang đọc bài viết trên blog này, đây là một cách khác để làm điều đó (chỉ cần đặt hàng dữ liệu đầu tiên đang sử dụng hằng số FirstRow và sau đó tắt nó đi) ...
Sub TransposeRowsFourAtATime()
Dim X As Long, LastRow As Long, OffSetCounter As Long
Const FirstRow As Long = 2
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For X = FirstRow To LastRow Step 5
Cells(FirstRow, "A").Offset(OffSetCounter).Resize(1, 4) = _
WorksheetFunction.Transpose(Cells(X, "A").Resize(4))
OffSetCounter = OffSetCounter + 1
Next
Range(Cells(FirstRow + OffSetCounter, "A"), Cells(LastRow, "A")).Clear
End Sub
Rick Rothstein (MVP - Excel)
Bạn có thể nhập các công thức này (giả sử dữ liệu của bạn bắt đầu bằng A1) và điền vào bao xa bạn cần
B1 =IF(ISBLANK(A5),A1,"")
C1 =IF(ISBLANK(A5),A2,"")
D1 =IF(ISBLANK(A5),A3,"")
E1 =IF(ISBLANK(A5),A4,"")
Sau đó Sao chép và Dán các giá trị đặc biệt. Sau đó sắp xếp để loại bỏ các dòng trống.