Lọc dữ liệu trùng nhau (1 người xem)

Liên hệ QC

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

thanhtt96

Thành viên mới
Tham gia
7/4/15
Bài viết
1
Được thích
0
gooChào các bác, em tìm trên mạng khắp không được mà lại ra cái diễn đàn này nên lập topic hỏi tí, k biết lập ở đây có đúng không.
Chả là em đang phải lập báo cáo những khách hàng trùng nhau. Thường cái này đơn giản là dùng hàm countif là ra, nhưng khổ nỗi cái file của em lớn quá, tới hơn 300k khách hàng lận, hàng tháng bổ sung thêm khoảng 40k khách nữa, nên chạy hàm này lâu lắm, mỗi lần chỉnh sửa gì là nó chạy lại cả tiếng.
Giờ mang lên đây nhờ các bác xem có cách nào tối ưu hơn không.
Yêu cầu là tạo ra một bảng mới mà biết được khách hàng đó đã mua hàng bao nhiêu lần. Mã số khách hàng là ở cột [TABLE="width: 115"]
[TR]
[TD="class: xl63, width: 115"]Document_No[/TD]
[/TR]
[/TABLE]

Rồi từ đó lập báo cáo những khách hàng mua 2 lần, 3 lần......
 

File đính kèm

gooChào các bác, em tìm trên mạng khắp không được mà lại ra cái diễn đàn này nên lập topic hỏi tí, k biết lập ở đây có đúng không.
Chả là em đang phải lập báo cáo những khách hàng trùng nhau. Thường cái này đơn giản là dùng hàm countif là ra, nhưng khổ nỗi cái file của em lớn quá, tới hơn 300k khách hàng lận, hàng tháng bổ sung thêm khoảng 40k khách nữa, nên chạy hàm này lâu lắm, mỗi lần chỉnh sửa gì là nó chạy lại cả tiếng.
Giờ mang lên đây nhờ các bác xem có cách nào tối ưu hơn không.
Yêu cầu là tạo ra một bảng mới mà biết được khách hàng đó đã mua hàng bao nhiêu lần. Mã số khách hàng là ở cột [TABLE="width: 115"]
[TR]
[TD="class: xl63, width: 115"]Document_No[/TD]
[/TR]
[/TABLE]

Rồi từ đó lập báo cáo những khách hàng mua 2 lần, 3 lần......
Chạy thử code này để thay thế công thức CountIf
PHP:
Sub trung()
Dim arr(), Res(), i As Long
arr = Range([G2], [G65536].End(3)).Value
ReDim Res(1 To UBound(arr), 1 To 1)
With CreateObject("scripting.dictionary")
   For i = 1 To UBound(arr)
      .Item(arr(i, 1)) = .Item(arr(i, 1)) + 1
   Next
   For i = 1 To UBound(arr)
      Res(i, 1) = .Item(arr(i, 1))
   Next
End With
[N2].Resize(i - 1) = Res
End Sub
 
Upvote 0
... khổ nỗi cái file của em lớn quá, tới hơn 300k khách hàng lận, hàng tháng bổ sung thêm khoảng 40k khách nữa, ...

Công ty gì làm ăn thì lớn mà chi thì hà tiện.
Với số luợng nửa triệu khách hàng một năm như thế này thì người ta dùng phần mềm chuyên nghiệp để quản lý chứ.
 
Upvote 0
Công ty gì làm ăn thì lớn mà chi thì hà tiện.
Với số luợng nửa triệu khách hàng một năm như thế này thì người ta dùng phần mềm chuyên nghiệp để quản lý chứ.
Theo em nghĩ thì 40k là số lượt phát sinh nghiệp vụ thôi. Giống như siêu thị thì cũng đến chứ.
Số lượng lớn thì sử dụng Privotable mà tổng hợp. Như thế sẽ nhanh hơn
 
Upvote 0
Xin chào các anh/chị trên diễn đàn. Em có một vấn đề nhờ anh chị giúp đỡ: Từ hệ thống chấm công download về số giờ bấm thẻ. Một người bấm thẻ 4 lần một ngày (trừ những người tăng ca), vấn đề là máy chấm công lặp lại mốc giờ quá nhiều. ví dụ: Nguyễn Văn A buổi sáng bấm thẻ 7:04 nó lặp lại 3->4 lần, mốc t.gian trưa, chiều cũng thế. Em muốn xóa dữ liệu trùng trên cùng một dòng chỉ để lại mỗi mốc thời gian hiển hiện một lần. có cách nào nhờ anh chị chỉ dẫn giùm. cám ơn!(Em có kèm file bên dưới)
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom