Bạn dùng thử file đính kèm nhé!mình có 1 file có 100 dòng chia thành 5 sheet mỗi sheet là 20 dòng, mình muốn từ mỗi sheet đó chia thành 5 cột mỗi cột là 20 dòng, rất mong nhận được giúp đỡ từ mọi người ạ !
Bạn dùng thử file đính kèm nhé!
Bạn xem file đính kèm nhé.mình cảm ơn bạn nha! nhưng mình muốn 100 dòng chia thành 5 sheet trước, rùi trong 5 sheet này mới chia ra thành 5 cột, mỗi cột 4 dòng, rất mong bạn giúp đỡ thêm !
Bạn xem file đính kèm nhé.
Bạn xem file đính kèm nhé.
Ngoài trường hợp này, bạn còn trường hợp nào khác không?bạn ơi ! mình còn 1 trường hợp : ví dụ mình có 89 dòng chia thành 5 sheet trước, rùi trong 5 sheet này mới chia ra thành 5 cột, mỗi cột 4 dòng, nhưng sheet 5 chỉ có 9 dòng và mình muốn sheet 5 sẽ là 3 cột thôi, hai cột 4 dòng, một cột 1 dòng thay vì là 5 cột như máy sheet trước, rất mong bạn giúp đỡ thêm !
Ngoài trường hợp này, bạn còn trường hợp nào khác không?
Bạn chạy và kiểm tra kết quả nhé!không ạ ! vì đôi khi có số dư nên mới sinh ra trường hợp như trên !
Bạn chạy và kiểm tra kết quả nhé!
Bạn chạy lại file đính kèm nhé.Bạn ơi ! cho mình làm phiền bạn thêm xíu nữa nha ! ý mình là : ví dụ tăng thêm 4 dòng là 93 dòng thì sheet 5 là 13 dòng và mình muốn sheet 5 sẽ là 4 cột , ba cột 4 dòng(vì thống nhất tất cả các cột đều 4 dòng) , một cột 1 dòng , tức là số dư sẽ tự động lùi về sau 1 cột!
Bạn chạy lại file đính kèm nhé.
và nhất là khi lại có thêm...không ạ ! vì đôi khi có số dư nên mới sinh ra trường hợp như trên !
Bạn ơi ! cho mình làm phiền bạn thêm xíu nữa nha ! ý mình là : ví dụ tăng thêm 4 dòng là 93 dòng thì sheet 5 là 13 dòng và mình muốn sheet 5 sẽ là 4 cột , ba cột 4 dòng(vì thống nhất tất cả các cột đều 4 dòng) , một cột 1 dòng , tức là số dư sẽ tự động lùi về sau 1 cột!
Theo tôi hiểu thì căn bản chia ở đây là phân mảng 1 chiều thành 3 chiều.Bạn chạy lại file đính kèm nhé.
Const SOCOT = 5
Const SODONG = 4
Dim b(1 To SODONG, 1 To SOCOT) As String
soDuLieu = UBound(a) ' tổng số dữ liệu
iA = 0 ' đếm dòng mảng a
For trang = 1 To (soDuLieu - 1) \ (SOCOT * SODONG) + 1 ' công thức tính số trang
For cot = 1 To SOCOT
For dong = 1 To SODONG
iA = iA + 1
If iA <= soDuLieu Then
b(dong, cot) = a(iA, 1)
Else
b(dong, cot) = ""
End If
Next dong
Next cot
Sheets("tên sheet" & trang).Range("A1").Resize(SODONG, SOCOT) = b ' chép mảng xuống sheet
Next trang
Tôi nể phục bạn về tính nhẫn nại...
nếu là tôi thì đã "ra đi" từ lúc này rồi...
và nhất là khi lại có thêm...
Theo tôi hiểu thì căn bản chia ở đây là phân mảng 1 chiều thành 3 chiều.
Với bài toán bình thường thì công thức phân khá dễ: Trang (sheet) > Dòng > Cột
Riêng bài này thì hơi đảo lộn chút: Trang > Cột > Dòng
Giả dụ bạn đã copy dữ liệu vào mảng a (copy từ sheet thì là mảng 2 chiều, chiều thứ hai chỉ có 1 cột)
.Mã:Const SOCOT = 5 Const SODONG = 4 Dim b(1 To SODONG, 1 To SOCOT) As String soDuLieu = UBound(a) ' tổng số dữ liệu iA = 0 ' đếm dòng mảng a For trang = 1 To (soDuLieu - 1) \ (SOCOT * SODONG) + 1 ' công thức tính số trang For cot = 1 To SOCOT For dong = 1 To SODONG iA = iA + 1 If iA <= soDuLieu Then b(dong, cot) = a(iA, 1) Else b(dong, cot) = "" End If Next dong Next cot Sheets("tên sheet" & trang).Range("A1").Resize(SODONG, SOCOT) = b ' chép mảng xuống sheet Next trang