THỐNG KÊ DỮ LIỆU DỰA VÀO NHIỀU ĐIỀU KIỆN. (1 người xem)

Liên hệ QC

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

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia
17/4/16
Bài viết
2,701
Được thích
2,434
Giới tính
Nam
Nghề nghiệp
Nhân viên kỹ thuật in ấn
Chào mọi người!

Em có file này có những vấn đề nhờ mọi người hỗ trợ.
Sheet NEGATIVE STOCK: Lọc Cột SKU QUANLITY ở sheet GPE nhỏ hơn 0(<0) rồi copy hết dữ liệu qua sheet NEGATIVE.
Lọc cột WEIGH/SKU giá trị nhỏ hơn 0, Chọn cột ARTICLE STATUS là số 3 và số 5, Chọn cột CEXTdùng hàm MID(CEXT,3,2) để lấy ra mã quầy 05 rồi copy dữ liệu qua sheet NEGATIVE ở ví trí kế tiếp.(Lấy cả tên tiêu đê)
Sheet F3,F5 H.STOCK: Lọc cột SKU QUANLITY ở sheet GPE giá trị lớn hơn 0(>0),Chọn cột ARTICLE STATUS là số 3 và 5,Chọn cột CEXT dùng hàm MID(CEXT,3,2) để lấy ra mã quầy 04 rồi copy dữ liệu qua sheet F3,F5 H.STOCK (kể cả tên tiêu đề
Sheet HIGH STOCK: Lọc SKU QUANLITY các giá trị từ cao đến thấp.
Ở tiêu đề TOP 100 CHẠY THEO SỐ LƯỢNG.
DÙNG HÀM MID(CEXT,3,2) bỏ mã quầy 03,05, rồi copy 100 dòng rồi dán vào ô D3 ở sheet HIGH STOCK.
ở tiêu đề TOP 100 CHẠY THEO GIÁ TRỊ
Lọc cột STock Cost Value các giá trị từ cao đến thấp, dùng hàm mid(CEXT,3,2) bỏ mã quầy 03,05, rồi copy 100 dòng dán vào ô d106 của sheet HIGH STOCK.
Sheet SAOA: cột K(SUPPLIER CODE): dò kết quả bên sheet Oderdass dựa vào điều kiện cột BARCODE., Nếu dữ liệu không tìm thấy vần giữ định dạng lỗi #NA.
Cột L(SUPPLIER NAME): dò kết quả bên sheet Oderdass dựa vào điều kiện cột BARCODE., Nếu dữ liệu không tìm thấy vần giữ định dạng lỗi #NA.
Cột M(STOCK): dựa vào kết quả ơt cột SKU QUANLITY dựa vào điều kiện Cột BARCODE.(ở sheet GPE)
Nếu không tìm thấy thì tìm dựa vào Cột CODE(ở sheet GPE) để tìm.
Nếu không tìm thấy thì vẫn giữ định dạng lỗi #NA.
Cột N(Awating): dựa vào kết quả bên sheet Awating dùng hàm sumif để tính dựa vào điều kiện cột BARCODE.
Sheet SAOA STOCK AVAILBLE: Chọn cột STOCK bên Sheet SAOA các giá trị lớn hơn 0. rồi copy tất cả dữ rồi dán vào sheet SAOA STOCK AVAILBLE ở ô A2.
Sheet SAOA NON STOCK: Chọn cột STOCK bên Sheet SAOA các giá trị bằng 0 rồi copy tất cả dữliệu rồi dán vào sheet SAOA NON STOCK ở ô A2.
Chọn cột STOCK (ở sheet SAOA) là các giá trị lỗi #NA, rồi copy dán vào sheet SAOA NON STOCKở dòng kế tiếp.
Sheet Ruptute: dùng công thức dò bên sheet SAOA kết hợp Sheet GPE :(Vlookup(Cột BARCODE,(ở sheet GPE),bảng dò (kết quả ở cột E(FGR),3,0) rôi lọc lấy những giá trị là số rồi copy tất cả dữ liệu thảo mãn vào sheet RUPTURE(lấy cả tên tiêu đề)
Em cảm ơn mọi người nhiều|~!
 
Lần chỉnh sửa cuối:
Dạ em đã hiểu ý Bác rồi.
do trong quá trình làm việc có vấn đề phát sinh nên em nhờ Bác sửa code, em muốn không lấy mã quầy 05 khi cột ARTICLE STATUS là 3,5.
với sheet HIGH STOCK:
Sheet HIGH STOCK: Lọc SKU QUANLITY các giá trị từ cao đến thấp.
Ở tiêu đề TOP 100 CHẠY THEO SỐ LƯỢNG.
DÙNG HÀM MID(CEXT,3,2) bỏ mã quầy 03,05, rồi copy 100 dòng rồi dán vào ô D3 ở sheet HIGH STOCK.
ở tiêu đề TOP 100 CHẠY THEO GIÁ TRỊ
Lọc cột STock Cost Value các giá trị từ cao đến thấp, dùng hàm mid(CEXT,3,2) bỏ mã quầy 03,05, rồi copy 100 dòng dán vào ô d106 của sheet HIGH STOCK.
Em cảm ơn Bác nhiều.
P/s: Bác đừng giân em mong Bác thông cảm cho em.
Trong yêu cầu có đoạn: Chọn cột CEXT dùng hàm MID(CEXT,3,2) để lấy ra mã quầy 04 rồi copy dữ liệu qua sheet F3,F5 H.STOCK"
Như vậy chỉ có mã "04" thôi, Làm gì có mã "05"?
Kiểm tra sheet này trước đi. Khi xong mới đến sheet khác.
PHP:
Public Sub F3_F5()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("GPE")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 18).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 18)
End With
For I = 2 To R
    If sArr(I, 11) > 0 Then
        If sArr(I, 7) = "3" Or sArr(I, 7) = "5" Then
            If Mid(sArr(I, 2), 3, 2) = "04" Then
                K = K + 1
                For J = 1 To 18
                    dArr(K, J) = sArr(I, J)
                Next J
                dArr(K, 2) = Mid(sArr(I, 2), 7, 3)
            End If
        End If
    End If
Next I
With Sheets("F3,F5 H.Stock")
    .Range("A3:A1000").Resize(, 18).ClearContents
    .Range("A3").Resize(K, 18) = dArr
    .Range("A3").Resize(K, 18).Sort Key1:=.Range("B3")
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Trong yêu cầu có đoạn: Chọn cột CEXT dùng hàm MID(CEXT,3,2) để lấy ra mã quầy 04 rồi copy dữ liệu qua sheet F3,F5 H.STOCK"
Như vậy chỉ có mã "04" thôi, Làm gì có mã "05"?
Kiểm tra sheet này trước đi. Khi xong mới đến sheet khác.
PHP:
Public Sub F3_F5()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("GPE")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 18).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 18)
End With
For I = 2 To R
    If sArr(I, 11) > 0 Then
        If sArr(I, 7) = "3" Or sArr(I, 7) = "5" Then
            If Mid(sArr(I, 2), 3, 2) = "04" Then
                K = K + 1
                For J = 1 To 18
                    dArr(K, J) = sArr(I, J)
                Next J
                dArr(K, 2) = Mid(sArr(I, 2), 7, 3)
            End If
        End If
    End If
Next I
With Sheets("F3,F5 H.Stock")
    .Range("A3:A1000").Resize(, 18).ClearContents
    .Range("A3").Resize(K, 18) = dArr
    .Range("A3").Resize(K, 18).Sort Key1:=.Range("B3")
End With
End Sub
code ra đúng rồi Bác ơi. Vậy làm tiếp sheet HIGH STOCK Bác nhé!
 
Upvote 0
code ra đúng rồi Bác ơi. Vậy làm tiếp sheet HIGH STOCK Bác nhé!
Sheet này có 2 bảng kết quả, phải nhờ vào vùng phụ để Sort từ cao đến thấp rồi lấy 100 dòng đầu.
Phải chạy 2 Sub riêng.
PHP:
Public Sub High_Stock_SL()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("GPE")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 18).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 18)
End With
For I = 2 To R
    If sArr(I, 11) > 0 Then
            If Mid(sArr(I, 2), 3, 2) <> "03" And Mid(sArr(I, 2), 3, 2) <> "05" Then
                K = K + 1
                For J = 1 To 18
                    dArr(K, J) = sArr(I, J)
                Next J
                dArr(K, 2) = Mid(sArr(I, 2), 3, 2)
            End If
    End If
Next I
With Sheets("HIGH STOCK")
    .Range("BA3:A1000").Resize(, 18).ClearContents
    .Range("BA3").Resize(K, 18) = dArr
    .Range("BA3").Resize(K, 18).Sort Key1:=.Range("BK3"), Order1:=xlDescending
    .Range("D3").Resize(100, 18).Value = .Range("BA3").Resize(100, 18).Value
    .Range("BA3").Resize(K, 18).ClearContents
End With
End Sub
PHP:
Public Sub High_Stock_GT()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("GPE")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 18).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 18)
End With
For I = 2 To R
    If sArr(I, 17) > 0 Then
            If Mid(sArr(I, 2), 3, 2) <> "03" And Mid(sArr(I, 2), 3, 2) <> "05" Then
                K = K + 1
                For J = 1 To 18
                    dArr(K, J) = sArr(I, J)
                Next J
                dArr(K, 2) = Mid(sArr(I, 2), 3, 2)
            End If
    End If
Next I
With Sheets("HIGH STOCK")
    .Range("BA3:BA1000").Resize(, 18).ClearContents
    .Range("BA3").Resize(K, 18) = dArr
    .Range("BA3").Resize(K, 18).Sort Key1:=.Range("BQ3"), Order1:=xlDescending
    .Range("D106").Resize(100, 18).Value = .Range("BA3").Resize(100, 18).Value
    .Range("BA3").Resize(K, 18).ClearContents
End With
End Sub
 
Upvote 0
Sheet này có 2 bảng kết quả, phải nhờ vào vùng phụ để Sort từ cao đến thấp rồi lấy 100 dòng đầu.
Phải chạy 2 Sub riêng.
PHP:
Public Sub High_Stock_SL()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("GPE")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 18).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 18)
End With
For I = 2 To R
    If sArr(I, 11) > 0 Then
            If Mid(sArr(I, 2), 3, 2) <> "03" And Mid(sArr(I, 2), 3, 2) <> "05" Then
                K = K + 1
                For J = 1 To 18
                    dArr(K, J) = sArr(I, J)
                Next J
                dArr(K, 2) = Mid(sArr(I, 2), 3, 2)
            End If
    End If
Next I
With Sheets("HIGH STOCK")
    .Range("BA3:A1000").Resize(, 18).ClearContents
    .Range("BA3").Resize(K, 18) = dArr
    .Range("BA3").Resize(K, 18).Sort Key1:=.Range("BK3"), Order1:=xlDescending
    .Range("D3").Resize(100, 18).Value = .Range("BA3").Resize(100, 18).Value
    .Range("BA3").Resize(K, 18).ClearContents
End With
End Sub
PHP:
Public Sub High_Stock_GT()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("GPE")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 18).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 18)
End With
For I = 2 To R
    If sArr(I, 17) > 0 Then
            If Mid(sArr(I, 2), 3, 2) <> "03" And Mid(sArr(I, 2), 3, 2) <> "05" Then
                K = K + 1
                For J = 1 To 18
                    dArr(K, J) = sArr(I, J)
                Next J
                dArr(K, 2) = Mid(sArr(I, 2), 3, 2)
            End If
    End If
Next I
With Sheets("HIGH STOCK")
    .Range("BA3:BA1000").Resize(, 18).ClearContents
    .Range("BA3").Resize(K, 18) = dArr
    .Range("BA3").Resize(K, 18).Sort Key1:=.Range("BQ3"), Order1:=xlDescending
    .Range("D106").Resize(100, 18).Value = .Range("BA3").Resize(100, 18).Value
    .Range("BA3").Resize(K, 18).ClearContents
End With
End Sub
Hai sub giống y nhau, chỉ khác sort, mình nghĩ gộp lại thành một, và sort 2 lần và lấy kết quả từng lần là được
 
Upvote 0
Sheet này có 2 bảng kết quả, phải nhờ vào vùng phụ để Sort từ cao đến thấp rồi lấy 100 dòng đầu.
Phải chạy 2 Sub riêng.
PHP:
Public Sub High_Stock_SL ()
Dim Sarr (), Darr (), tôi As Long, J As Long, K As Long, R As Long
Với Sheets ( "GPE")
    Sarr = .Range ( "A2", .Range ( "A2"). End (xlDown)). Resize (, 18) .Value
    R = UBound (Sarr): ReDim darr (1 Để R, 1 Để 18)
Kết thúc với
Đối với I = 2 Để R
    Nếu Sarr (I, 11)> 0 Then
            Nếu trung (Sarr (I, 2), 3, 2) <> "03" và Mid (Sarr (I, 2), 3, 2) <> "05" Sau đó,
                K = K + 1
                Đối với J = 1 Để 18
                    Darr (K, J) = Sarr (I, J)
                tiếp J
                Darr (K, 2) = Mid (Sarr (I, 2), 3, 2)
            End If
    End If
tôi tiếp theo
Với Sheets ( "CỔ CAO")
    .Range ( "BA3: A1000"). Resize (, 18) .ClearContents
    .Range ( "BA3"). Resize (K, 18) = darr
    . .Range ( "BA3") Thay đổi kích thước (K, 18) .Sort Key1:. = Range ( "BK3"), Order1: = xlDescending
    .Range ( "D3"). Thay đổi kích thước (100, 18) .Value = .Range ( "BA3"). Thay đổi kích thước (100, 18) .Value
    .Range ( "BA3") Thay đổi kích thước (K, 18) .ClearContents.
Kết thúc với
End Sub
PHP:
Public Sub High_Stock_GT ()
Dim Sarr (), Darr (), tôi As Long, J As Long, K As Long, R As Long
Với Sheets ( "GPE")
    Sarr = .Range ( "A2", .Range ( "A2"). End (xlDown)). Resize (, 18) .Value
    R = UBound (Sarr): ReDim darr (1 Để R, 1 Để 18)
Kết thúc với
Đối với I = 2 Để R
    Nếu Sarr (I, 17)> 0 Then
            Nếu trung (Sarr (I, 2), 3, 2) <> "03" và Mid (Sarr (I, 2), 3, 2) <> "05" Sau đó,
                K = K + 1
                Đối với J = 1 Để 18
                    Darr (K, J) = Sarr (I, J)
                tiếp J
                Darr (K, 2) = Mid (Sarr (I, 2), 3, 2)
            End If
    End If
tôi tiếp theo
Với Sheets ( "CỔ CAO")
    .Range ( "BA3: BA1000"). Resize (, 18) .ClearContents
    .Range ( "BA3"). Resize (K, 18) = darr
    . .Range ( "BA3") Thay đổi kích thước (K, 18) .Sort Key1:. = Range ( "BQ3"), Order1: = xlDescending
    .Range ( "D106"). Thay đổi kích thước (100, 18) .Value = .Range ( "BA3"). Thay đổi kích thước (100, 18) .Value
    .Range ( "BA3") Thay đổi kích thước (K, 18) .ClearContents.
Kết thúc với
End Sub
[/ PHP] [/ QUOTE]
Code này ra đúng rồi Bác ơi. Trường hợp này em muốn giữ cột nguyên định dạng cột  CEXT thì làm thế nào Bác?
 
Lần chỉnh sửa cuối:
Upvote 0
Code này ra đúng rồi Bác ơi. Trường hợp này em muốn giữ cột nguyên định dạng cột CEXT thì làm thế nào Bác?
Trong 2 Sub đều có dòng này:
Mã:
dArr(K, 2) = Mid(sArr(I, 2), 3, 2)
Xóa bỏ nó đi.
 
Upvote 0
Hai sub giống y nhau, chỉ khác sort, mình nghĩ gộp lại thành một, và sort 2 lần và lấy kết quả từng lần là được
Đọc theo từng chữ trong "đám rừng" ở bài #1, rồi viết theo từng chữ ... chưa nghĩ đến "túm gọn nó".
Híc! Hai trong 1:
PHP:
Public Sub High_Stock()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("GPE")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 18).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 18)
End With
    For I = 2 To R
        If Mid(sArr(I, 2), 3, 2) <> "03" And Mid(sArr(I, 2), 3, 2) <> "05" Then
            K = K + 1
            For J = 1 To 18
                dArr(K, J) = sArr(I, J)
            Next J
        End If
    Next I
With Sheets("HIGH STOCK")
    .Range("BA3").Resize(K, 18) = dArr
    .Range("BA3").Resize(K, 18).Sort Key1:=.Range("BK3"), Order1:=xlDescending
    .Range("D3").Resize(100, 18).Value = .Range("BA3").Resize(100, 18).Value
    '------------------------------------------------------------------------------------------------------'
    .Range("BA3").Resize(K, 18).Sort Key1:=.Range("BQ3"), Order1:=xlDescending
    .Range("D106").Resize(100, 18).Value = .Range("BA3").Resize(100, 18).Value
    .Range("BA3").Resize(K, 18).ClearContents
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Đọc theo từng chữ trong "đám rừng" ở bài #1, rồi viết theo từng chữ ... chưa nghĩ đến "túm gọn nó".
Híc! Hai trong 1:
PHP:
Public Sub High_Stock()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("GPE")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 18).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 18)
End With
    For I = 2 To R
        If Mid(sArr(I, 2), 3, 2) <> "03" And Mid(sArr(I, 2), 3, 2) <> "05" Then
            K = K + 1
            For J = 1 To 18
                dArr(K, J) = sArr(I, J)
            Next J
        End If
    Next I
With Sheets("HIGH STOCK")
    .Range("BA3").Resize(K, 18) = dArr
    .Range("BA3").Resize(K, 18).Sort Key1:=.Range("BK3"), Order1:=xlDescending
    .Range("D3").Resize(100, 18).Value = .Range("BA3").Resize(100, 18).Value
    '------------------------------------------------------------------------------------------------------'
    .Range("BA3").Resize(K, 18).Sort Key1:=.Range("BQ3"), Order1:=xlDescending
    .Range("D106").Resize(100, 18).Value = .Range("BA3").Resize(100, 18).Value
    .Range("BA3").Resize(K, 18).ClearContents
End With
End Sub
Code ra đúng rồi Bác ơi, Vậy làm tiếp sheet SAOA Bác nhé!
Chúc Bác bữa trưa ngon miệng!
 
Upvote 0
Code ra đúng rồi Bác ơi, Vậy làm tiếp sheet SAOA Bác nhé!
Chúc Bác bữa trưa ngon miệng!
Đến sheet này thì "đớ lưỡi" rồi.
"Cột N(Awating): dựa vào kết quả bên sheet Awating dùng hàm sumif để tính dựa vào điều kiện cột BARCODE."
Sheet Awaiting, cột nào là BARCODE, cột nào là SumIf?
 
Upvote 0
Đến sheet này thì "đớ lưỡi" rồi.
"Cột N(Awating): dựa vào kết quả bên sheet Awating dùng hàm sumif để tính dựa vào điều kiện cột BARCODE."
Sheet Awaiting, cột nào là BARCODE, cột nào là SumIf?[/QUOTE
Trong sheet Awating. Vùng điều kiện: Cột TILLCODE(Cột O), Điều kiện: Cột BARCODE(Cột B ở Sheet SAOA), Vùng Tính Tổng: Cột Q(OdrQty) nên sử dụng hàm Sumif đó Bác.

Em gửi file em làm bằng tay.(ở cột AWATING)

Em cảm ơn Bác nhiều!
 

File đính kèm

Upvote 0
Trong sheet Awating. Vùng điều kiện: Cột TILLCODE(Cột O), Điều kiện: Cột BARCODE(Cột B ở Sheet SAOA), Vùng Tính Tổng: Cột Q(OdrQty) nên sử dụng hàm Sumif đó Bác.
File trước thì cột O là "ITEMNAME", cột Q là "Tbd"/ Chắc chết.
Yêu cầu như trên với cái công thức trong cột Awaiting có "ăn nhậu gì đâu Trời?
PHP:
=SUMIF(Awaiting!N2:P1905;SAOA!B2;Awaiting!P2:P1905)
Chỗ nào lấy cột Q?
Nhìn công thức đã thấy quái chiêu, không hiểu rồi. Thà đừng có công thức.
Mỗi lần bạn "giỡn" một chút, oải quá!
 
Lần chỉnh sửa cuối:
Upvote 0
Yêu cầu như trên với cái công thức trong cột Awaiting có "ăn nhậu gì đâu Trời?
PHP:
=SUMIF(Awaiting!N2:P1905;SAOA!B2;Awaiting!P2:P1905)
Chỗ nào lấy cột Q?
Nhìn công thức đã thấy quái chiêu, không hiểu rồi. Thà đừng có công thức.
=SUMIF(Awaiting!O2:O1905,SAOA!B2,Awaiting!Q2:Q1905
Công thức em lấy nhầm cột Bác ơi. Công thức em đó là đúng, cột Q(trong sheet Awating là những số lượng đang chờ giao đó Bác, (vì trong một tháng có nhiều sản phẩm đang chờ giao hàng nên trường hợp này em dùng hàm Sumif)
Em chúc Bác buổi tối vui.
 
Upvote 0
File trước thì cột O là "ITEMNAME", cột Q là "Tbd"/ Chắc chết.
"Công thức em lấy nhầm cột Bác ơi"
Mỗi lần bạn "giỡn" một chút/ Oải quá!
 
Upvote 0
File trước thì cột O là "ITEMNAME", cột Q là "Tbd"/ Chắc chết.
"Công thức em lấy nhầm cột Bác ơi"
Mỗi lần bạn "giỡn" một chút/ Oải quá!
Em có gửi lại file #30 đó Bác.
dạ, em không có giỡn bác đâu tại em làm nhanh quá nên khi xảy ra vấn đề mới vỡ lẽ đó Bác.
Cột Q là OrdQty mà Bác. Cột điều kiện là cột O(TILLCODE)

Em cảm ơn Bác nhiều.
 
Upvote 0
Em có gửi lại file #30 đó Bác.
dạ, em không có giỡn bác đâu tại em làm nhanh quá nên khi xảy ra vấn đề mới vỡ lẽ đó Bác.
Cột Q là OrdQty mà Bác. Cột điều kiện là cột O(TILLCODE)

Em cảm ơn Bác nhiều.
Bạn lại thích "giỡn" nữa. Từ đầu tôi làm giúp bạn là theo bài bạn gởi ở bài #7".
Bài #30 là mới gởi, có sai các tiêu đề cột với bài trước! Mở file bạn gởi ở bài #7 xem. Bạn vẫn chưa nhận sai! Chẳng hiểu sao tôi lại dính với bài này!
 
Upvote 0
Bạn lại thích "giỡn" nữa. Từ đầu tôi làm giúp bạn là theo bài bạn gởi ở bài #7".
Bài #30 là mới gởi, có sai các tiêu đề cột với bài trước! Mở file bạn gởi ở bài #7 xem. Bạn vẫn chưa nhận sai! Chẳng hiểu sao tôi lại dính với bài này!
Dạ, lỗi này là do em , em xin nhận sai lỗi này,

Bác đừng giận em, mong bác tha lỗi cho em,
 
Upvote 0
Dạ, lỗi này là do em , em xin nhận sai lỗi này,

Bác đừng giận em, mong bác tha lỗi cho em,
Trước khi viết yêu cầu và giải thích, nên đọc kỹ, dò kỹ lại từng chữ, từng tiêu đề, từng cột....
Vì không phải cùng ngành với bạn mà mọi người đều hiểu kiểu viết tắt hay "như trước" của bạn.
Ở quê tui thì những người "tăm hơ tăm hất" còn gọi là "bòng chanh bóc chách".
PHP:
Public Sub S_SAOA()
Dim Dic As Object, GPE As Object, Await As Object, sArr(), dArr(), tArr(), I As Long, K As Long, R As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
Set GPE = CreateObject("Scripting.Dictionary")
Set Await = CreateObject("Scripting.Dictionary")
With Sheets("Oder dass")
    tArr = .Range("E2", .Range("E2").End(xlDown)).Resize(, 6).Value
    R = UBound(tArr)
    For I = 1 To R
        Dic.Item(tArr(I, 1)) = I
    Next I
End With
'---------------------------------
With Sheets("GPE")
    sArr = .Range("C2", .Range("C2").End(xlDown)).Resize(, 10).Value
    R = UBound(sArr)
    For I = 1 To R
        GPE.Item(sArr(I, 1)) = sArr(I, 9)
        GPE.Item(sArr(I, 2)) = sArr(I, 9)
    Next I
End With
'---------------------------------
With Sheets("Awaiting")
    sArr = .Range("O2", .Range("Q2").End(xlDown)).Value
    R = UBound(sArr)
    For I = 1 To R
        Await.Item(sArr(I, 1)) = Await.Item(sArr(I, 1)) + sArr(I, 3)
    Next I
End With
'-------------------
With Sheets("SAOA")
    sArr = .Range("B2", .Range("B2").End(xlDown)).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 4)
    For I = 1 To R
        If Dic.Exists(sArr(I, 1)) Then
            dArr(I, 1) = tArr(Dic.Item(sArr(I, 1)), 5)
            dArr(I, 2) = tArr(Dic.Item(sArr(I, 1)), 6)
        Else
            dArr(I, 1) = "#/#": dArr(I, 2) = "#/#"
        End If
        If GPE.Exists(sArr(I, 1)) Then
            dArr(I, 3) = GPE.Item(sArr(I, 1))
        Else
            dArr(I, 3) = "#/#"
        End If
        dArr(I, 4) = 0
        If Await.Exists(sArr(I, 1)) Then
            dArr(I, 4) = Await.Item(sArr(I, 1))
        End If
    Next I
    .Range("K2").Resize(I - 1, 4) = dArr
End With
End Sub
Viết "tía lia" chứ chưa xem lại để "túm gọn", chừng nào đúng tính sau.
 
Upvote 0
Trước khi viết yêu cầu và giải thích, nên đọc kỹ, dò kỹ lại từng chữ, từng tiêu đề, từng cột....
Vì không phải cùng ngành với bạn mà mọi người đều hiểu kiểu viết tắt hay "như trước" của bạn.
Ở quê tui thì những người "tăm hơ tăm hất" còn gọi là "bòng chanh bóc chách".
PHP:
Public Sub S_SAOA()
Dim Dic As Object, GPE As Object, Await As Object, sArr(), dArr(), tArr(), I As Long, K As Long, R As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
Set GPE = CreateObject("Scripting.Dictionary")
Set Await = CreateObject("Scripting.Dictionary")
With Sheets("Oder dass")
    tArr = .Range("E2", .Range("E2").End(xlDown)).Resize(, 6).Value
    R = UBound(tArr)
    For I = 1 To R
        Dic.Item(tArr(I, 1)) = I
    Next I
End With
'---------------------------------
With Sheets("GPE")
    sArr = .Range("C2", .Range("C2").End(xlDown)).Resize(, 10).Value
    R = UBound(sArr)
    For I = 1 To R
        GPE.Item(sArr(I, 1)) = sArr(I, 9)
        GPE.Item(sArr(I, 2)) = sArr(I, 9)
    Next I
End With
'---------------------------------
With Sheets("Awaiting")
    sArr = .Range("O2", .Range("Q2").End(xlDown)).Value
    R = UBound(sArr)
    For I = 1 To R
        Await.Item(sArr(I, 1)) = Await.Item(sArr(I, 1)) + sArr(I, 3)
    Next I
End With
'-------------------
With Sheets("SAOA")
    sArr = .Range("B2", .Range("B2").End(xlDown)).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 4)
    For I = 1 To R
        If Dic.Exists(sArr(I, 1)) Then
            dArr(I, 1) = tArr(Dic.Item(sArr(I, 1)), 5)
            dArr(I, 2) = tArr(Dic.Item(sArr(I, 1)), 6)
        Else
            dArr(I, 1) = "#/#": dArr(I, 2) = "#/#"
        End If
        If GPE.Exists(sArr(I, 1)) Then
            dArr(I, 3) = GPE.Item(sArr(I, 1))
        Else
            dArr(I, 3) = "#/#"
        End If
        dArr(I, 4) = 0
        If Await.Exists(sArr(I, 1)) Then
            dArr(I, 4) = Await.Item(sArr(I, 1))
        End If
    Next I
    .Range("K2").Resize(I - 1, 4) = dArr
End With
End Sub
Viết "tía lia" chứ chưa xem lại để "túm gọn", chừng nào đúng tính sau.
Code ra đúng rồi Bác ơi, có cách nào tóm gọn lại được không Bác? Vì code của Bác vào dữ liệu thật của em là treo máy luôn.

Em cảm ơn Bác nhiều!
 
Upvote 0
Code ra đúng rồi Bác ơi, có cách nào tóm gọn lại được không Bác? Vì code của Bác vào dữ liệu thật của em là treo máy luôn.

Em cảm ơn Bác nhiều!
Máy tôi "quay quay" 1 giây là xong mà.
Sheet GPE 33257 dòng
Oder dass 22721 dòng
Awaiting 1905 dòng
SAOA 15123 dòng
Tổng file 15MB
 
Upvote 0
Máy tôi "quay quay" 1 giây là xong mà.
Sheet GPE 33257 dòng
Oder dass 22721 dòng
Awaiting 1905 dòng
SAOA 15123 dòng
Chắc tại máy em đó Bác, em toàn dùng người ta cho em không Bác
Bác làm tiếp Bác nhé!
Sheet SAOA STOCK AVAILBLE: Chọn cột STOCK bên Sheet SAOA các giá trị lớn hơn 0. rồi copy tất cả dữ rồi dán vào sheet SAOA STOCK AVAILBLE ở ô A2.

Em cảm ơn Bác nhiều!
 
Upvote 0
Web KT

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

Back
Top Bottom