LỌC THEO ĐIỀU KIỀN

Liên hệ QC

Lê Minh Ngàn

Thành viên chính thức
Tham gia
6/9/17
Bài viết
74
Được thích
2
Giới tính
Nam
Dear Gia Đình GPE!
Em có một file bao gồm nhiều kho với nhau,giờ em muốn tách từng kho cho từng sheet theo tiêu chí ở cột E ( Loại)Anh /Chị có cách nào giúp em với ạ! Em cảm ơn Anh /Chị rất nhiều.Cách em làm là lọc từng kho rồi lại lọc chỉ tiêu theo cột E ( Loại) ra một sheet khác,sau đó em dùng hàm để lấy…Như vậy rất lâu và tốn thời gian.Em có gần 50 kho như thế này.Anh/Chị giúp em với ạ.Em cảm ơn ạ!
 

File đính kèm

  • LOC THEO DIEU KIEN.xlsx
    105.5 KB · Đọc: 17
Dear Gia Đình GPE!
Em có một file bao gồm nhiều kho với nhau,giờ em muốn tách từng kho cho từng sheet theo tiêu chí ở cột E ( Loại)Anh /Chị có cách nào giúp em với ạ! Em cảm ơn Anh /Chị rất nhiều.Cách em làm là lọc từng kho rồi lại lọc chỉ tiêu theo cột E ( Loại) ra một sheet khác,sau đó em dùng hàm để lấy…Như vậy rất lâu và tốn thời gian.Em có gần 50 kho như thế này.Anh/Chị giúp em với ạ.Em cảm ơn ạ!
Cái này dùng VBA.Bạn nói chi tiết hơn xem nào.
 
Dạ,em có làm mẫu 1 kho đó ạ,tức là em sẽ phải tách từng kho ra một sheet riêng dựa theo chỉ tiêu của cột E ( Loại) và cho ra kết quả từng kho ạ
Nhưng mình không hiểu chỗ Nhập điều chuyển đấy lấy từ đâu.Mà TT là gì nhỉ.Bạn phải giải thích với điều kiện nào thì có số lượng ở dưới ấy.
 
Nhưng mình không hiểu chỗ Nhập điều chuyển đấy lấy từ đâu.Mà TT là gì nhỉ.Bạn phải giải thích với điều kiện nào thì có số lượng ở dưới ấy.
TT LÀ THÀNH TIỀN BẠN Ạ,NHẬP ĐIỀU CHUYỂN LÀ MÌNH ĐANG LẤY THEO CHỈ TIÊU CỘT E( LOAI),BẠN CHỈ CẦN LỌC CỘT E SẼ CÓ NHIỀU ĐIỀU KIỆN NHƯ THẾ NÀY ĐỂ LẤY RA.
 
Dear Gia Đình GPE!
Em có một file bao gồm nhiều kho với nhau,giờ em muốn tách từng kho cho từng sheet theo tiêu chí ở cột E ( Loại)Anh /Chị có cách nào giúp em với ạ! Em cảm ơn Anh /Chị rất nhiều.Cách em làm là lọc từng kho rồi lại lọc chỉ tiêu theo cột E ( Loại) ra một sheet khác,sau đó em dùng hàm để lấy…Như vậy rất lâu và tốn thời gian.Em có gần 50 kho như thế này.Anh/Chị giúp em với ạ.Em cảm ơn ạ!
Tặng bạn.
09.01.2019.PNG
 
Dear Gia Đình GPE!
Em có một file bao gồm nhiều kho với nhau,giờ em muốn tách từng kho cho từng sheet theo tiêu chí ở cột E ( Loại)Anh /Chị có cách nào giúp em với ạ! Em cảm ơn Anh /Chị rất nhiều.Cách em làm là lọc từng kho rồi lại lọc chỉ tiêu theo cột E ( Loại) ra một sheet khác,sau đó em dùng hàm để lấy…Như vậy rất lâu và tốn thời gian.Em có gần 50 kho như thế này.Anh/Chị giúp em với ạ.Em cảm ơn ạ!

Cột E (Loại) của bạn đâu có "Nhận điều chuyển" mà lấy dữ liệu?
Hổng lẽ 50 kho tạo ra 50 sheet? Chỉ cần 1 sheet, muốn lọc kho nào thì nhập tên kho đó vào ô điều kiện lọc được không?
Nếu được thì tôi gởi file đã làm cho bạn.
 
Lần chỉnh sửa cuối:
TT LÀ THÀNH TIỀN BẠN Ạ,NHẬP ĐIỀU CHUYỂN LÀ MÌNH ĐANG LẤY THEO CHỈ TIÊU CỘT E( LOAI),BẠN CHỈ CẦN LỌC CỘT E SẼ CÓ NHIỀU ĐIỀU KIỆN NHƯ THẾ NÀY ĐỂ LẤY RA.
Bạn xem code.
Mã:
Sub chuyendulieu()
Dim arr, arr1
Dim dic As Object
Dim a As Long, b As Long, lr As Long, i As Long, j As Long, tong1 As Double, tong2 As Double
Dim dk As String, dks As String
Set dic = CreateObject("scripting.dictionary")
    dic.CompareMode = vbBinaryCompare
With Sheet1
     lr = .Range("a" & Rows.Count).End(xlUp).Row
     If lr < 3 Then Exit Sub
     arr = .Range("A3:H" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 1)
End With
With Sheet2
     dk = .Range("B2").Value
     For i = 1 To UBound(arr, 1)
         If UCase(dk) = UCase(arr(i, 1)) Then
            If Not dic.exists(arr(i, 2)) Then
               dic.Add arr(i, 2), "KK"
               a = a + 1
               arr1(a, 1) = arr(i, 2)
            End If
         End If
         dks = UCase(arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 5))
         If Not dic.exists(dks) Then
            dic.Item(dks) = Array((arr(i, 6) + arr(i, 7)), (arr(i, 6) + arr(i, 7)) * arr(i, 8))
         Else
            tong1 = dic.Item(dks)(0)
            tong2 = dic.Item(dks)(1)
            tong1 = tong1 + arr(i, 6) + arr(i, 7)
            tong2 = tong2 + (arr(i, 6) + arr(i, 7)) * arr(i, 8)
            dic.Item(dks) = Array(tong1, tong2)
         End If
    Next i
    lr = .Range("b" & Rows.Count).End(xlUp).Row
    If lr > 4 Then .Range("B5:N" & lr).ClearContents
    If a Then .Range("b5").Resize(a, 1).Value = arr1 Else Exit Sub
    lr = .Range("b" & Rows.Count).End(xlUp).Row
    arr = .Range("B3:N" & lr).Value
    For j = 2 To UBound(arr, 2) Step 2
        For i = 3 To UBound(arr, 1)
            dks = UCase(dk & "#" & arr(i, 1) & "#" & arr(1, j))
            If dic.exists(dks) Then
               arr(i, j) = dic.Item(dks)(0)
               arr(i, j + 1) = dic.Item(dks)(1)
               If arr(i, j) = 0 Then arr(i, j) = Empty
               If arr(i, j + 1) = 0 Then arr(i, j + 1) = Empty
            End If
       Next i
   Next j
   .Range("B3:N" & lr).Value = arr
End With
End Sub
 

File đính kèm

  • LOC THEO DIEU KIEN (2).xlsm
    133.3 KB · Đọc: 24
Web KT
Back
Top Bottom