AnhThu-1976
Thành viên tích cực
- Tham gia
- 17/10/14
- Bài viết
- 1,061
- Được thích
- 175
Em đang chập chững mà
Dạ cảm ơn thầy! em sẽ tìm hiểuBạn cứ tìm hiểu PivotTable đi, sẽ không phải hối hận đâu
Có rất nhiều sư phụ trên diễn đàn này (như thầy ptm0412) dùng PivotTable đến mức "xuất quỷ nhập thần". Riêng ta thì không mong đạt khả năng đó, chỉ cần học đủ dùng là ổn rồi
Cái hay của PivotTable là:
- Bạn chỉ cực 1 lần duy nhất rồi dùng mãi mãi. Bạn cứ ung dung pha ly cafe ngồi tán gẫu, dữ liệu có thêm bớt gì thì PivotTable cũng tự cập nhật cho bạn đầy đủ
- Tốc độ nhanh nhất so với tất cả các giải pháp khác (công thức hay VBA)
- Giao diện báo cáo rất đa dạng và thẫm mỹ, mặc sức mà lựa chọn
vân vân... và... mây mây...
PivotTable là chức năng cực mạnh góp phần không nhỏ làm nên tên tuổi của Excel, nhưng thuần hóa PivotTable theo ý riêng như trong bài nầy không phải là vấn đề đơn giảnDạ cảm ơn thầy! em sẽ tìm hiểu
Thì vậy thôi! Công cụ mãi mãi vẫn là công cụ, tùy chuyện mà dùng cho hợp lý (của bền tại người)
lưu ý PivotTable làm kích thước file tăng lên đáng kể, nếu bảng tổng hợp nào cũng chơi PivotTable thì...
Nghe bạn nói vậy khiến tôi nghi ngờ rằng: Có thể rất nhiều người không biết làm cách nào để ra được kết quả giống như tôi chăng?nhưng thuần hóa PivotTable theo ý riêng như trong bài nầy không phải là vấn đề đơn giản
làm được như bạn có mấy người, mình không dùng PivotTable nên cũng không biết, thử bấm vào dấu +, - các dòng ngày tháng phía dưới biến mất, bấm chuột phải chuột trái lung tung, nắm trên nắm dưới kéo thả đủ chổ, bảng chạy tưng lên mà cũng không chịu ra, cuối cùng tắt file không lưuThì vậy thôi! Công cụ mãi mãi vẫn là công cụ, tùy chuyện mà dùng cho hợp lý (của bền tại người)
------------------------------------------
Nghe bạn nói vậy khiến tôi nghi ngờ rằng: Có thể rất nhiều người không biết làm cách nào để ra được kết quả giống như tôi chăng?
Ẹc... Ẹc...
làm được như bạn có mấy người, mình không dùng PivotTable nên cũng không biết, thử bấm vào dấu +, - các dòng ngày tháng phía dưới biến mất, bấm chuột phải chuột trái lung tung, nắm trên nắm dưới kéo thả đủ chổ, bảng chạy tưng lên mà cũng không chịu ra, cuối cùng tắt file không lưu
có được video thì quá tuyệt vời, mình và các bạn trên diễn đàn dể thực hiện hơn.Không biết có thể học bạn à! (mọi thứ đều có trên mạng)
Mình tin rằng mình là người tệ nhất về vụ PivotTable và Chart (không tin cứ hỏi sư phụ ptm0412), vậy mà mình cũng "mò" được bài này (hú hồn) thì mình tin rằng những thành viên thông minh như bạn sẽ là chuyện nhỏ
-----------------------
Gợi ý thêm: Bài này mình không chèn PivotTable theo cách thông thường mà bấm tổ hợp phím Alt + D + P (mở PivotTable and PivotChart Wizard) rồi check mục Mutiple consolidation range ---> Next ---> Check mục I will create the page fields ---> Next ---> Chọn vùng NhapBan!$G$17:$U$10000 ---> Add ---> Next
Từ giờ bắt đầu kéo thả các kiểu để hiệu chỉnh (bằng cách kéo mục Column xuống dưới Row, chỉnh hiển thị trong PivotTable Option theo kiểu "Classic PivotTable layout")
Đại khái vậy!
Nay mai nếu các bạn vẫn chưa làm được và còn quan tâm, mình sẽ quay video toàn bộ quá trình gửi lên cho các bạn tham
Thầy ơi hình như PivotTable biết em nhưng em lại không biết nó. Làm mãi mà không ra được như bài của thầy.Không biết có thể học bạn à! (mọi thứ đều có trên mạng)
Mình tin rằng mình là người tệ nhất về vụ PivotTable và Chart (không tin cứ hỏi sư phụ ptm0412), vậy mà mình cũng "mò" được bài này (hú hồn) thì mình tin rằng những thành viên thông minh như bạn sẽ là chuyện nhỏ
-----------------------
Gợi ý thêm: Bài này mình không chèn PivotTable theo cách thông thường mà bấm tổ hợp phím Alt + D + P (mở PivotTable and PivotChart Wizard) rồi check mục Mutiple consolidation range ---> Next ---> Check mục I will create the page fields ---> Next ---> Chọn vùng NhapBan!$G$17:$U$10000 ---> Add ---> Next
Từ giờ bắt đầu kéo thả các kiểu để hiệu chỉnh (bằng cách kéo mục Column xuống dưới Row, chỉnh hiển thị trong PivotTable Option theo kiểu "Classic PivotTable layout")
Đại khái vậy!
Nay mai nếu các bạn vẫn chưa làm được và còn quan tâm, mình sẽ quay video toàn bộ quá trình gửi lên cho các bạn tham
Trên diễn đàn đã có nhiều rồi bạn à, chẳng hạn ở đây:Thầy ơi hình như PivotTable biết em nhưng em lại không biết nó. Làm mãi mà không ra được như bài của thầy.
Thầy có thể làm một Topic hướng dẫn về cái này được không ạ
Code của bạn cho kết quả đúng như ở sheet KQ.Dựa vào góp ý của anh và thầy Ba tê.Em thử sưa như thế này có được không anh:
Mã:Sub Tonghop() Dim Dic As Object, Tem As String Dim sArr(), tArr(), dArr(1 To 65535, 1 To 3) Dim i As Long, j As Long, K As Long, C As Long Set Dic = CreateObject("Scripting.Dictionary") With Sheets("NhapBan") C = .Range("IV17").End(xlToLeft).Column - 6 tArr = .Range("S17", .Range("IV17").End(xlToLeft)).Value sArr = .Range("G18", .Range("G65535").End(3)).Resize(, C).Value For i = 1 To UBound(sArr) For j = 1 To UBound(tArr, 2) If sArr(i, j + 12) <> Empty Then Tem = sArr(i, 1) & "#" & tArr(1, j) If Not Dic.Exists(Tem) Then K = K + 1 Dic.Add Tem, K dArr(K, 1) = sArr(i, 1) dArr(K, 2) = tArr(1, j) dArr(K, 3) = sArr(i, j + 12) Else dArr(Dic.Item(Tem), 3) = dArr(Dic.Item(Tem), 3) + sArr(i, j + 12) End If End If Next j Next i End With With Sheets("KQ") With .Range("A5:C65535") .ClearContents .Borders.LineStyle = xlNone End With .Range("A5").Resize(K, 3) = dArr With .Range("A5").Resize(K, 3) .Borders.LineStyle = xlContinuous .Borders(xlInsideHorizontal).Weight = xlHairline End With End With End Sub
E cảm ơn thầy ạ!Đã quay xong video, mời các bạn xem toàn bộ quá trình:
Code của bạn cho kết quả đúng như ở sheet KQ.
Từ code của bạn, tôi sửa lại để cho phù hợp với sheet MongMuon. Tôi đã sửa nhưng chưa được kết quả như mong muốn.
Các bạn vui lòng giúp tôi sửa code để kết quả chạy đúng như ở sheet MongMuon
Xin cảm ơn!
Option Explicit
Sub Tonghop()
Dim Dic As Object, Tem As String
Dim sArr(), tArr(), dArr(1 To 65535, 1 To 16)
Dim i As Long, j As Long, K As Long, C As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("NhapBan")
C = .Range("IV17").End(xlToLeft).Column - 6
tArr = .Range("S17", .Range("IV17").End(xlToLeft)).Value
sArr = .Range("G18", .Range("G65535").End(3)).Resize(, C).Value
For i = 1 To UBound(sArr)
For j = 1 To UBound(tArr, 2)
If sArr(i, j + 12) <> Empty Then
Tem = sArr(i, 1) & "#" & tArr(1, j)
If Not Dic.Exists(Tem) Then
K = K + 1
Dic.Add Tem, K
dArr(K, 1) = sArr(i, 1)
dArr(K, 10) = tArr(1, j)
dArr(K, 15) = sArr(i, j + 12)
Else
dArr(Dic.Item(Tem), 15) = dArr(Dic.Item(Tem), 15) + sArr(i, j + 12)
End If
End If
Next j
Next i
End With
With Sheets("KQ")
With .Range("A8:Q65535")
.ClearContents
.Borders.LineStyle = xlNone
End With
.Range("B8").Resize(K, 16) = dArr
With .Range("B8").Resize(K, 16)
.Borders.LineStyle = xlContinuous
.Borders(xlInsideHorizontal).Weight = xlHairline
End With
End With
End Sub
Cho em hỏiNếu nhiều hơn 3 mã hàng thì các con số 15 trong này không chính xác:
Phải cho nó là một biến nào đó khác con số cố định 15, ví dụ:PHP:sArr = .Range("G18", .Range("G65535").End(3)).Resize(, 15).Value For i = 1 To UBound(sArr) For j = 13 To 15
PHP:C = .Range("IV17").End(xlToLeft).Column - 6