Sub XepLaiBang()
Dim Rws As Long, W As Integer, Col As Integer, Cot As Integer
Dim Rng As Range, Cls As Range
Rws = [C3].End(xlDown).Row
Set Rng = [F3].Resize(Rws, 2)
ReDim Arr(1 To 2 * Rws, 1 To 7)
1 [A20].Resize(5+Rws, 7).Value = Arr()
For Each Cls In Rng
If Cls.Value > 0 Then
W = W + 1: Arr(W, 1) = W
For Col = 2 To 5
Arr(W, Col) = Cells(Cls.Row, Col).Value
Next Col
Arr(W, Cls.Column) = Cls.Value
End If
Next Cls
2 [A12].Resize(W, 7).Value = Arr()
End Sub
Cám ơn bác nhiều lắm ạ! Em có thể nhờ bác sửa lại nếu chia 2 bảng thành 2 sheet với số dòng không giới hạn ko ạ?PHP:Sub XepLaiBang() Dim Rws As Long, W As Integer, Col As Integer, Cot As Integer Dim Rng As Range, Cls As Range Rws = [C3].End(xlDown).Row Set Rng = [F3].Resize(Rws, 2) ReDim Arr(1 To 2 * Rws, 1 To 7) [A20].Resize(5+Rws, 7).Value = Arr() For Each Cls In Rng If Cls.Value > 0 Then W = W + 1: Arr(W, 1) = W For Col = 2 To 5 Arr(W, Col) = Cells(Cls.Row, Col).Value Next Col Arr(W, Cls.Column) = Cls.Value End If Next Cls [A12].Resize(W, 7).Value = Arr() End Sub
Cám ơn bác nhiều ạ!Rảnh rỗi viết mấy hàm excell để góp vui, chứ giờ VBA lên ngôi quá ))
Trừ phi bạn là dân lập trình, chuyên phát triển ứng dụng, chứ để cho VBA "lên ngôi" là hiện tượng xấu.Rảnh rỗi viết mấy hàm excell để góp vui, chứ giờ VBA lên ngôi quá ))
Bảng kết quả | ||||||||||||||||
STT | Mã Số | Họ tên | Nơi sinh | Địa chỉ | Tháng 1 | Tháng 2 | ||||||||||
1 | 11 | Nguyễn Văn A | 100,000 | |||||||||||||
2 | 11 | Nguyễn Văn A | - | 200,000 | ||||||||||||
3 | 22 | Nguyễn Văn B | - | 200,000 | ||||||||||||
4 | 33 | Đặng Thị C | 300,000 | - | ||||||||||||
5 | 44 | Vũ Văn D | 200,000 | - | ||||||||||||
6 | 44 | Vũ Văn D | - | 200,000 | ||||||||||||
7 | 55 | Nguyễn Thị E | 300,000 | - |
STT | Mã Số | Họ tên | Nơi sinh | Địa chỉ | Tháng 1 | ||||||||||||||||||||
1 | 11 | Nguyễn Văn A | 100,000 | ||||||||||||||||||||||
4 | 33 | Đặng Thị C | 300,000 | ||||||||||||||||||||||
5 | 44 | Vũ Văn D | 200,000 | ||||||||||||||||||||||
7 | 55 | Nguyễn Thị E | 300,000 | ||||||||||||||||||||||
STT | Mã Số | Họ tên | Nơi sinh | Địa chỉ | Tháng 2 | ||||||||||||||||||||
2 | 11 | Nguyễn Văn A | 200,000 | ||||||||||||||||||||||
3 | 22 | Nguyễn Văn B | 200,000 | ||||||||||||||||||||||
6 | 44 | Vũ Văn D | 200,000 |
Ý em là như này ạ:@Chủ bài đăng
Bảng kết quả hiện thời là:
Bảng kết quả STT Mã Số Họ tên Nơi sinh Địa chỉ Tháng 1 Tháng 2 1 11 Nguyễn Văn A 100,000 2 11 Nguyễn Văn A - 200,000 3 22 Nguyễn Văn B - 200,000 4 33 Đặng Thị C 300,000 - 5 44 Vũ Văn D 200,000 - 6 44 Vũ Văn D - 200,000 7 55 Nguyễn Thị E 300,000 -
Giờ bạn muốn thành 2 bảng ở 2 trang như vậy, phải không:
STT Mã Số Họ tên Nơi sinh Địa chỉ Tháng 1 1 11 Nguyễn Văn A 100,000 4 33 Đặng Thị C 300,000 5 44 Vũ Văn D 200,000 7 55 Nguyễn Thị E 300,000 STT Mã Số Họ tên Nơi sinh Địa chỉ Tháng 2 2 11 Nguyễn Văn A 200,000 3 22 Nguyễn Văn B 200,000 6 44 Vũ Văn D 200,000
Ý của thớt,theo thuật ngữ kỹ thuật là:À, thì ra là đem bảng kết quả sang trang khác;
/-)úng là tiếng Việt!
...
Ý của em đơn giản như 2 bác trên hướng dẫn thôi ạ. Chứ không cao như này đâu ạ. Cám ơn bác ạ!Ý của thớt,theo thuật ngữ kỹ thuật là:
- Pivot theo người, Tên Nhân Viên + Mã Số.
- Cross-Tabbed theo tháng.
Đó là mẫu Full Pivot, bảng đầu vào
Nếu Unpivot Fully thì bảng đầu ra sẽ có dạng là
- Các tabs sẽ trở thành dòng, không còn tabs tháng 1, tháng 2, ... tháng n nữa.
Mỗi dòng sẽ là
Tên Nhân Viên + Mã Số + Tháng + Dữ liệu tháng
Bấy giờ thớt muốn Partly Unpivot bảng đầu ra
- Tức là vẫn còn giữ các tabs tháng 1, tháng 2, ... tháng n
- Nhưng lúc cross-tab thì không đặt cùng hàng mà sang hàng khác (trái với luật pivot)
- Nói cách khác, dữ liệu tháng 2 không nằm cùng dòng với dữ liệu tháng 1, mà nằm ở dòng kế tiếp. Nếu có n tháng thì mỗi trị pivot (Mã + Tên NV) sẽ có n dòng.
Cấu trúc này thì data cũng không phải, mà báo cáo cũng không phải.Nếu có n tháng thì mỗi trị pivot (Mã + Tên NV) sẽ có n dòng.
Khả năng lớn là "sáng kiến độc đáo" của thớt. Chỉ nghĩ vậy thôi chứ chưa thực hiện bao giờ cho nên không biết sự "tự hoại" của nó.Cấu trúc này thì data cũng không phải, mà báo cáo cũng không phải.
...
Pivot và Unpivot, Cross-tabbed table là căn bản của xây dựng bảng tính và phân tích dữ liệu....
Ý của em đơn giản như 2 bác trên hướng dẫn thôi ạ. Chứ không cao như này đâu ạ. Cám ơn bác ạ!