Nhờ sửa code lọc danh sách duy nhất (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

kieuhuy_bmt

Thành viên thường trực
Tham gia
18/10/07
Bài viết
288
Được thích
36
Nghề nghiệp
Đang thất nghiệp
Kính gửi các Pro!
Tôi có 1 đoạn Code trích lọc danh sách duy nhất, copy trên GPE về với hy vọng sửa thêm nếm để sử dụng vào công việc, nhưng vọc mãi mà kg được (dốt quá) nay đành lại nhờ các Bác.
Nhờ các bác bày cho sửa cái code ở đoạn nào để thêm được cột và xuất sang 1 sheet khác.
Các bác xem File dưới đây (file nhẹ mà sao kg gửi lên trực tiếp được đành gửi qua Mediefre). Cảm ơn mọi người và xin lỗi tác giả của Code này.
http://www.mediafire.com/?6u7ker9oghm7ewl
 
Bác ndu96081631, bácLê Duy Thương cho em xin cái VIDEO nào! Em có PivotTable mấy lần xong nó cứ dính nhập nhằng phát oải.
bạn vui lòng xem file nhé.thực ra code là khi nào các công cụ có sẵn trong excel không xử lý được thì tôi mới học viết code, vì tôi lười viết code lắm.
ẹc ẹc
 

File đính kèm

Upvote 0

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cho đến hiện nay, tôi nghĩ chỉ có PivotTable hoặc ADO mới có thể cho tốc độ nhanh thôi
Các code viết theo kiểu khác thôi khỏi nghĩ đến cho mất công (vì biết thực tế dữ liệu có bao nhiêu cột đâu mà lường trước)

Còn 1 cách mình thấy nó cũng cho kết quả khá khả quan là dùng mảng kết hợp với Dictionary mà Ndu cũng khá tâm đắc đấy thôi. Tốc độ cũng đáng nể lắm đấy nha.
 
Upvote 0
Copy về máy báo lỗi và tô đỏ ở dòng sau: MyStr = Right(ArrKH(i, 2), Len(ArrKH(i, 2)) - 1) Bo VBBack o dau
bác ThuNghi xem giúp!

Khổ ghê, phần Bo .... là ghi chú khi copy vào bài nó bị mất dấu nháy.
Xem file sau, gần 40.000 dòng mất 0.4 s.
Cơ bản là dùng thử Dic thôi chớ biết rằng Pivot là lựa chọn tối ưu. Còn ADO trong vấn đề này chắc kg nhanh hơn và ra đúng theo mẫu báo cáo yêu cầu.
 

File đính kèm

Upvote 0
Còn 1 cách mình thấy nó cũng cho kết quả khá khả quan là dùng mảng kết hợp với Dictionary mà Ndu cũng khá tâm đắc đấy thôi. Tốc độ cũng đáng nể lắm đấy nha.

Vấn đề là nếu làm ở mức tổng quát thì.. thua anh à! Vì có biết bao nhiêu cột và cột nào cần tổng hợp, cột nào cần tính tổng đâu. Thêm nữa, lọc duy nhất theo kiểu rẽ nhánh rất là chua: Trong mỗi phần từ duy nhất của nhánh 1 lại có nhiều phần tử duy nhất của nhành 2... rồi trong mỗi phần tử duy nhất của nhánh 2 lại có nhiều phần tử duy nhất của nhánh 3... vân vân và vân vân ---> Lọc đến nhánh thứ 10 chắc đói luôn
Với PivotTable thì lại khác, chỉ dùng tay kéo thả các trường sẽ cho kết quả trong tích tắc
 
Upvote 0
Các anh chị nghiên cứu code này và góp ý thêm, em thấy rất hoàn hảo

50 000 dòng chạy trong nháy mắt. Có bao nhiêu cột cũng chạy ra là êm ru

PHP:
Sub Thongke()
Dim cot, dong, i, data
cot = Range([c1], [c1].End(2)).Value
dong = Array([a1], [b1])
Set data = [a1].CurrentRegion
ActiveWorkbook.PivotCaches.Add(1, data).CreatePivotTable "", Tablename:="PivotTable1"
With ActiveSheet.PivotTables("PivotTable1")
  .AddFields RowFields:=dong
  For i = 1 To UBound(cot, 2)
    .AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields(cot(1, i)), "Sum" & cot(1, i), xlSum
  Next
  .DataPivotField.Orientation = xlColumnField
End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Các anh chị nghiên cứu code này và góp ý thêm, em thấy rất hoàn hảo

50 000 dòng chạy trong nháy mắt. Có bao nhiêu cột cũng chạy ra là êm ru

PHP:
Sub Thongke()
cot = Range([c1], [c1].End(2)).Value
Set data = [a1].CurrentRegion
ActiveWorkbook.PivotCaches.Add(1, data).CreatePivotTable "", Tablename:="PivotTable1"
With ActiveSheet.PivotTables("PivotTable1")
  .AddFields RowFields:=Array("KHACH HANG", "SAN PHAM")
  For i = 1 To UBound(cot, 2)
    .AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields(cot(1, i)), "Sum" & cot(1, i), xlSum
  Next
  .DataPivotField.Orientation = xlColumnField
End With
End Sub

Dùng PivotTable thì nói làm gì nữa... Như đã nói ở trên: NÓ LÀ VÔ ĐỊCH rồi
Bảo đãm hổng có món nào có tốc độ và mức độ tùy biến hơn nó được đâu
Mà nếu đã là PivotTable thì dùng TAY cho xong, cần gì đến code?
 
Upvote 0
Dùng PivotTable thì nói làm gì nữa... Như đã nói ở trên: NÓ LÀ VÔ ĐỊCH rồi
Bảo đãm hổng có món nào có tốc độ và mức độ tùy biến hơn nó được đâu

Vì đang nghiên cứu VBA thế nên mới không dùng tay ấy mà

Cái vấn đề là em nghiên cứu cả đêm mới viết ra được đoạn code này đấy. Có mấy dòng code mà suy nghĩ nát óc chứ phải chơi đâu.
Nhờ vậy mà sáng ra thêm tí nữa.
 
Lần chỉnh sửa cuối:
Upvote 0
Thêm nữa, lọc duy nhất theo kiểu rẽ nhánh rất là chua: Trong mỗi phần từ duy nhất của nhánh 1 lại có nhiều phần tử duy nhất của nhành 2... rồi trong mỗi phần tử duy nhất của nhánh 2 lại có nhiều phần tử duy nhất của nhánh 3... vân vân và vân vân ---> Lọc đến nhánh thứ 10 chắc đói luôn
Dùng PivotTable thì nói làm gì nữa... Như đã nói ở trên: NÓ LÀ VÔ ĐỊCH rồi
Bảo đãm hổng có món nào có tốc độ và mức độ tùy biến hơn nó được đâu
Mà nếu đã là PivotTable thì dùng TAY cho xong, cần gì đến code?
Em thấy thêm cái code cho PivotTable rất tiện lợi đấy chứ, rất phù hợp cho những ai chưa rành ...Như em chẳng hạn.
 
Upvote 0
Em thấy thêm cái code cho PivotTable rất tiện lợi đấy chứ, rất phù hợp cho những ai chưa rành ...Như em chẳng hạn.
Muốn code với những công cụ có sẵn trong Excel, bạn có thể record macro mà (đâu cần phải học hay thuộc lòng gì cho mệt)
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom