Tìm kiếm theo nhiều điều kiện (5 người xem)

Liên hệ QC

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

vulunktheky

Thành viên thường trực
Tham gia
2/3/18
Bài viết
274
Được thích
84
Giới tính
Nam
Chào các anh chị và các bạn!
Mình có file dữ liệu được trích xuất từ hệ thống Oracle cua công ty. và yêu cầu ở đây là mình cần lấy dữ liệu: Order No, ART và theo từng SIZE với điều kiện là theo LINE: E607,F2..... và chỉ lấy dòng nhập kho (tô màu cam sheet du lieu).
Xin cảm ơn các anh chị và các bạn.
 

File đính kèm

Chào các anh chị và các bạn!
Mình có file dữ liệu được trích xuất từ hệ thống Oracle cua công ty. và yêu cầu ở đây là mình cần lấy dữ liệu: Order No, ART và theo từng SIZE với điều kiện là theo LINE: E607,F2..... và chỉ lấy dòng nhập kho (tô màu cam sheet du lieu).
Xin cảm ơn các anh chị và các bạn.
Lấy cái gì cho kết quả mẫu xem nào.Mà dùng VBA được không.
 
kết quả trả về là như thế này anh.1548221935670.png
 
kết quả trả về là như thế này anh.View attachment 211487
Bạn xem kết quả có đúng không nhé.Ở đây nếu trùng mình cộng vào với nhau.
Mã:
Sub laydulieu()
Dim arr, arr1, lr As Long, i As Long, j As Integer, dk As String, dic As Object, a As Long, dks As String
Set dic = CreateObject("scripting.dictionary")
With Sheets("DU LIEU")
     lr = .Range("A" & Rows.Count).End(xlUp).Row
     If lr < 4 Then Exit Sub
     arr = .Range("A2:W" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 3)
End With
    For i = 3 To UBound(arr, 1)
        If arr(i, 1) <> "Line Line Line" And arr(i, 1) <> Empty Then
           dks = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3)
           If Not dic.exists(dks) Then
             dic.Add dks, "KK"
             a = a + 1
             arr1(a, 1) = arr(i, 1): arr1(a, 2) = arr(i, 2): arr1(a, 3) = arr(i, 3)
             For j = 4 To UBound(arr, 2)
               If arr(i - 1, j) <> Empty Then
                  dk = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & arr(i - 1, j)
                  If Not dic.exists(dk) Then
                     dic.Add dk, arr(i, j)
                  Else
                     dic.Item(dk) = dic.Item(dk) + arr(i, j)
                  End If
               End If
             Next j
        End If
     End If
Next i
With Sheets("Tim kiem")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr > 3 Then .Range("B3:AA" & lr).ClearContents
     If a Then .Range("B3").Resize(a, 3).Value = arr1
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     arr = .Range("B1:AA" & lr).Value
     For i = 1 To UBound(arr, 1)
         For j = 4 To UBound(arr, 2)
            dk = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & arr(1, j)
           If dic.exists(dk) Then
              arr(i, j) = dic.Item(dk)
           End If
       Next j
     Next i
      .Range("B1:AA" & lr).Value = arr
End With
End Sub
 

File đính kèm

Nếu xuất hiện trùng như vậy thì chỉ lấy kết quả phía trên (có số lượng chi tiết từng size) thôi anh.
Bài đã được tự động gộp:

Bạn xem kết quả có đúng không nhé.
Mã:
Sub laydulieu()
Dim arr, arr1, lr As Long, i As Long, j As Integer, dk As String, dic As Object, a As Long, dks As String
Set dic = CreateObject("scripting.dictionary")
With Sheets("DU LIEU")
     lr = .Range("A" & Rows.Count).End(xlUp).Row
     If lr < 4 Then Exit Sub
     arr = .Range("A2:W" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 3)
End With
    For i = 3 To UBound(arr, 1)
        If arr(i, 1) <> "Line Line Line" And arr(i, 1) <> Empty Then
           dks = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3)
           If Not dic.exists(dks) Then
             dic.Add dks, "KK"
             a = a + 1
             arr1(a, 1) = arr(i, 1): arr1(a, 2) = arr(i, 2): arr1(a, 3) = arr(i, 3)
             For j = 4 To UBound(arr, 2)
               If arr(i - 1, j) <> Empty Then
                  dk = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & arr(i - 1, j)
                  If Not dic.exists(dk) Then
                     dic.Add dk, arr(i, j)
                  Else
                     dic.Item(dk) = dic.Item(dk) + arr(i, j)
                  End If
               End If
             Next j
        End If
     End If
Next i
With Sheets("Tim kiem")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr > 3 Then .Range("B3:AA" & lr).ClearContents
     If a Then .Range("B3").Resize(a, 3).Value = arr1
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     arr = .Range("B1:AA" & lr).Value
     For i = 1 To UBound(arr, 1)
         For j = 4 To UBound(arr, 2)
            dk = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & arr(1, j)
           If dic.exists(dk) Then
              arr(i, j) = dic.Item(dk)
           End If
       Next j
     Next i
      .Range("B1:AA" & lr).Value = arr
End With
End Sub
Cảm ơn anh, e sẽ kiểm tra.
 
Bạn xem kết quả có đúng không nhé.Ở đây nếu trùng mình cộng vào với nhau.
Mã:
Sub laydulieu()
Dim arr, arr1, lr As Long, i As Long, j As Integer, dk As String, dic As Object, a As Long, dks As String
Set dic = CreateObject("scripting.dictionary")
With Sheets("DU LIEU")
     lr = .Range("A" & Rows.Count).End(xlUp).Row
     If lr < 4 Then Exit Sub
     arr = .Range("A2:W" & lr).Value
     ReDim arr1(1 To UBound(arr, 1), 1 To 3)
End With
    For i = 3 To UBound(arr, 1)
        If arr(i, 1) <> "Line Line Line" And arr(i, 1) <> Empty Then
           dks = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3)
           If Not dic.exists(dks) Then
             dic.Add dks, "KK"
             a = a + 1
             arr1(a, 1) = arr(i, 1): arr1(a, 2) = arr(i, 2): arr1(a, 3) = arr(i, 3)
             For j = 4 To UBound(arr, 2)
               If arr(i - 1, j) <> Empty Then
                  dk = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & arr(i - 1, j)
                  If Not dic.exists(dk) Then
                     dic.Add dk, arr(i, j)
                  Else
                     dic.Item(dk) = dic.Item(dk) + arr(i, j)
                  End If
               End If
             Next j
        End If
     End If
Next i
With Sheets("Tim kiem")
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     If lr > 3 Then .Range("B3:AA" & lr).ClearContents
     If a Then .Range("B3").Resize(a, 3).Value = arr1
     lr = .Range("B" & Rows.Count).End(xlUp).Row
     arr = .Range("B1:AA" & lr).Value
     For i = 1 To UBound(arr, 1)
         For j = 4 To UBound(arr, 2)
            dk = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & arr(1, j)
           If dic.exists(dk) Then
              arr(i, j) = dic.Item(dk)
           End If
       Next j
     Next i
      .Range("B1:AA" & lr).Value = arr
End With
End Sub
HI anh, Cảm ơn anh, kết quả đúng rồi anh.
View attachment 211497
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom