Xin giúp giùm lọc dữ liệu bên phần tổng hợp (1 người xem)

  • Thread starter Thread starter tuyvuong
  • Ngày gửi Ngày gửi
Liên hệ QC

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

tuyvuong

Thành viên mới
Tham gia
15/8/11
Bài viết
28
Được thích
4
Chào các bạn,
Mình có 1 file Khach hang 2013, Sheet đầu tên là "
Ds Khach hang" chứa danh sách khách mua hàng gồm các thông tin: Ngày mua, Họ tên, Địa chỉ, Số CMND (và một số thông tin khác như doanh thu... nhưng mình đã cắt để đơn giản), Sheet thứ 2 tên là "Tong hop" chứa các thông tin của Sheet "Ds Khach hang" với các yêu cầu của sếp như sau:
1. Sheet "Tong hop" được tạo ra từ sheet "Ds Khach hang" với thông tin của 01 khách hàng là duy nhất.
2. Khi Sheet "Ds Khach hang" có biến động, thì sheet "Tong hop" tự cập nhật theo
3. Sheet “Tong hop” thống kê được số lần của khách hàng đó mua (bất kể thời gian nào, miễn sao tồn tại trong Sheet "Ds Khach hang"
Ví dụ:
- Trong file mẫu đính kèm, khách hàng Nguyễn Văn A xuất hiện 03 lần trong sheet "Ds Khach hang", thì bên Sheet "Tong hop" sẽ thống kê toàn bộ thông tin của khách hàng "Nguyễn Văn A" với cột "Số lần" sẽ có giá trị là 3 (01 dòng duy nhất).
- Có 01 Khách hàng cũng tên "Nguyễn Văn A" nhưng khác địa chỉ (hoặc khác CMND) sẽ xem như là khách hàng thứ 2 (không phải khách hàng Nguyễn Văn A ở trên)
Rất mong các bạn ra tay giúp đỡ!
Thạch Lâm
 

File đính kèm

Với dữ liệu có số dòng nhỏ thì bạn có thể làm như sau:
Đặt Name
1/ Area
Mã:
=OFFSET('Ds Khach Hang'!$B$3,,,COUNTA('Ds Khach Hang'!$C$3:$C$6000),1)
2/Dk
Mã:
=CONCATENATE(OFFSET(Area,,1),OFFSET(Area,,2),OFFSET(Area,,3))
Công thức tại C4
Mã:
=IFERROR(INDEX(OFFSET(Area,,COLUMN(A:A)),LARGE(IF(MATCH(Dk,Dk,0)=ROW(INDIRECT("1:"&ROWS(Area))),ROW(INDIRECT("1:"&ROWS(Area))),""),ROW(1:1))),"")
Ctrl + Shift + Enter kéo sang hết cột E
Công thức tại F4
Mã:
=SUMPRODUCT((OFFSET(Area,,1)=C4)*(OFFSET(Area,,2)=D4)*(OFFSET(Area,,3)=E4))
Với dữ liệu nhiều dòng thì bạn nên sử dụng VBA cho bảng tính nhẹ
 

File đính kèm

Chào các bạn,
Mình có 1 file Khach hang 2013, Sheet đầu tên là "
Ds Khach hang" chứa danh sách khách mua hàng gồm các thông tin: Ngày mua, Họ tên, Địa chỉ, Số CMND (và một số thông tin khác như doanh thu... nhưng mình đã cắt để đơn giản), Sheet thứ 2 tên là "Tong hop" chứa các thông tin của Sheet "Ds Khach hang" với các yêu cầu của sếp như sau:
1. Sheet "Tong hop" được tạo ra từ sheet "Ds Khach hang" với thông tin của 01 khách hàng là duy nhất.
2. Khi Sheet "Ds Khach hang" có biến động, thì sheet "Tong hop" tự cập nhật theo
3. Sheet “Tong hop” thống kê được số lần của khách hàng đó mua (bất kể thời gian nào, miễn sao tồn tại trong Sheet "Ds Khach hang"
Ví dụ:
- Trong file mẫu đính kèm, khách hàng Nguyễn Văn A xuất hiện 03 lần trong sheet "Ds Khach hang", thì bên Sheet "Tong hop" sẽ thống kê toàn bộ thông tin của khách hàng "Nguyễn Văn A" với cột "Số lần" sẽ có giá trị là 3 (01 dòng duy nhất).
- Có 01 Khách hàng cũng tên "Nguyễn Văn A" nhưng khác địa chỉ (hoặc khác CMND) sẽ xem như là khách hàng thứ 2 (không phải khách hàng Nguyễn Văn A ở trên)
Rất mong các bạn ra tay giúp đỡ!
Thạch Lâm
Nếu dữ liệu vài chục ngàn dòng thì thử code này xem sao
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Dic As Object, Tem As String, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
R = Rows.Count
With Sheets("DS Khach Hang")
    sArr = .Range(.[C3], .Range("C" & R).End(xlUp)).Resize(, 3).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1)
    Tem = UCase(sArr(I, 1)) & sArr(I, 3)
    If Tem <> vbNullString Then
    If Not Dic.Exists(Tem) Then
        K = K + 1
        Dic.Add Tem, K
        For J = 1 To 3
            dArr(K, J) = sArr(I, J)
            dArr(K, 4) = 1
        Next J
    Else
        dArr(Dic.Item(Tem), 4) = dArr(Dic.Item(Tem), 4) + 1
    End If
    End If
Next I
With Sheets("Tong Hop")
    .Range("C4:F" & Rows.Count).ClearContents
    If K Then .[C4].Resize(K, 4).Value = dArr
End With
Set Dic = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Cám ơn 02 bạn,
Dữ liệu bán hàng cũng khá lớn nên chắc mình chọn giải pháp Code, tuy nhiên bạn chỉ giúp mình cách Add đoạn code trên như thế nào được không? Mình đang sài Òfice 2010.
Mong tin sớm
 
Cám ơn 02 bạn,
Dữ liệu bán hàng cũng khá lớn nên chắc mình chọn giải pháp Code, tuy nhiên bạn chỉ giúp mình cách Add đoạn code trên như thế nào được không? Mình đang sài Òfice 2010.
Mong tin sớm
File 2010 đây, Nhớ cho nó Enable Contents
Chỉ so sánh Họ Tên và CMND thôi, địa chỉ không đưa vào so sánh vì nhập 1 người mà địa chỉ lung tung sẽ không biết là cùng 1 người. Vì thế nếu chính xác tên và CMND sẽ được xem là 1
 

File đính kèm

Lần chỉnh sửa cuối:
Chào các bạn,
Mình có 1 file Khach hang 2013, Sheet đầu tên là "
Ds Khach hang" chứa danh sách khách mua hàng gồm các thông tin: Ngày mua, Họ tên, Địa chỉ, Số CMND (và một số thông tin khác như doanh thu... nhưng mình đã cắt để đơn giản), Sheet thứ 2 tên là "Tong hop" chứa các thông tin của Sheet "Ds Khach hang" với các yêu cầu của sếp như sau:
1. Sheet "Tong hop" được tạo ra từ sheet "Ds Khach hang" với thông tin của 01 khách hàng là duy nhất.
2. Khi Sheet "Ds Khach hang" có biến động, thì sheet "Tong hop" tự cập nhật theo
3. Sheet “Tong hop” thống kê được số lần của khách hàng đó mua (bất kể thời gian nào, miễn sao tồn tại trong Sheet "Ds Khach hang"
Ví dụ:
- Trong file mẫu đính kèm, khách hàng Nguyễn Văn A xuất hiện 03 lần trong sheet "Ds Khach hang", thì bên Sheet "Tong hop" sẽ thống kê toàn bộ thông tin của khách hàng "Nguyễn Văn A" với cột "Số lần" sẽ có giá trị là 3 (01 dòng duy nhất).
- Có 01 Khách hàng cũng tên "Nguyễn Văn A" nhưng khác địa chỉ (hoặc khác CMND) sẽ xem như là khách hàng thứ 2 (không phải khách hàng Nguyễn Văn A ở trên)
Rất mong các bạn ra tay giúp đỡ!
Thạch Lâm
Dùng PivotTable cho gọn, nhẹ, dể sử dụng, không cần tí hàm hay code nào, nhưng kết quả cũng như mong đợi.
 

File đính kèm

Oke rồi bạn ơi :)
Bạn giúp mình chút nữa nha (được voi đòi tiên mà)
Danh sách Tổng hợp có Index tự động với số lần tăng dần được không bạn?
Thanks
 
Oke rồi bạn ơi :)
Bạn giúp mình chút nữa nha (được voi đòi tiên mà)
Danh sách Tổng hợp có Index tự động với số lần tăng dần được không bạn?
Thanks
Mấy cái chữ màu đỏ bên trên là gì vậy, Nửa tây nửa ta khó chịu lắm.
Những từ chuyên môn như Index, Sub thì còn hiểu được.
Thay Sub này cho Sub cũ trong module thử xem.
Híc.
PHP:
Public Sub GPE()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, Dic As Object, Tem As String, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
R = Rows.Count
With Sheets("DS Khach Hang")
    sArr = .Range(.[C3], .Range("C" & R).End(xlUp)).Resize(, 3).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 4)
For I = 1 To UBound(sArr, 1)
    Tem = UCase(sArr(I, 1)) & sArr(I, 3)
    If Tem <> vbNullString Then
    If Not Dic.Exists(Tem) Then
        K = K + 1
        Dic.Add Tem, K
        For J = 1 To 3
            dArr(K, J) = sArr(I, J)
            dArr(K, 4) = 1
        Next J
    Else
        dArr(Dic.Item(Tem), 4) = dArr(Dic.Item(Tem), 4) + 1
    End If
    End If
Next I
With Sheets("Tong Hop")
    .Range("C4:F" & Rows.Count).ClearContents
    If K Then
        .[C4].Resize(K, 4).Value = dArr
        .Range(.[C4], .[C1000000].End(xlUp)).Resize(, 4).Sort Key1:=.[F4]
    End If
End With
Set Dic = Nothing
End Sub
 
Web KT

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

Back
Top Bottom