THỐNG KÊ DỮ LIỆU DỰA VÀO NHIỀU ĐIỀU KIỆN. (3 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:
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!
Chú ý: các code sau này tôi không dùng "#N/A" cho kết quả, mà dùng "#/#". Bạn phải chỉnh lại Sub chạy cho sheet GPE luôn đi, để "#N/A" là lỗi của Excel khó chịu lắm.
PHP:
Public Sub SAOA_AVA()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("SAOA")
    sArr = .Range("a2", .Range("a2").End(xlDown)).Resize(, 14).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 14)
End With
For I = 1 To R
    If Val(sArr(I, 13)) > 0 Then
        K = K + 1
        For J = 1 To 14
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheets("SAOA stock available")
    .Range("A2").Resize(10000, 15).ClearContents
    .Range("A2").Resize(K, 14) = dArr
End With
End Sub
 
Upvote 0
Chú ý: các code sau này tôi không dùng "#N/A" cho kết quả, mà dùng "#/#". Bạn phải chỉnh lại Sub chạy cho sheet GPE luôn đi, để "#N/A" là lỗi của Excel khó chịu lắm.
PHP:
Public Sub SAOA_AVA()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("SAOA")
    sArr = .Range("a2", .Range("a2").End(xlDown)).Resize(, 14).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 14)
End With
For I = 1 To R
    If Val(sArr(I, 13)) > 0 Then
        K = K + 1
        For J = 1 To 14
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheets("SAOA stock available")
    .Range("A2").Resize(10000, 15).ClearContents
    .Range("A2").Resize(K, 14) = dArr
End With
End Sub
Dạ em đã chỉnh lại rồi Bác ơi, Đúng là nhìn khó chịu thật.
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(Dòng kế tiếp ở đây là những giá trị Bằng 0 khi copy xong, và những giá trị lỗi sẽ nằm kế tiếp.

Em cảm ơn Bác nhiều!
 
Upvote 0
Upvote 0
Dạ em đã chỉnh lại rồi Bác ơi, Đúng là nhìn khó chịu thật.
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(Dòng kế tiếp ở đây là những giá trị Bằng 0 khi copy xong, và những giá trị lỗi sẽ nằm kế tiếp.

Em cảm ơn Bác nhiều!
Chỉnh sao cho không còn "#N/A", chỉ lọc "#/#" thôi nhé.
PHP:
Public Sub SAOA_NON()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("SAOA")
    sArr = .Range("a2", .Range("a2").End(xlDown)).Resize(, 14).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 14)
End With
For I = 1 To R
    If sArr(I, 13) = 0 Then
        K = K + 1
        For J = 1 To 14
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
For I = 1 To R
    If CStr(sArr(I, 13)) = "#/#" Then
        K = K + 1
        For J = 1 To 14
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheets("SAOA non stock")
    .Range("A2").Resize(10000, 15).ClearContents
    .Range("A2").Resize(K, 14) = dArr
End With
End Sub
Chú ý là SAOA không có cột STOCK, chỉ có Stock 22.10. Đã nhắc là phải viết chính xác tên cột, không viết tắt được.
 
Lần chỉnh sửa cuối:
Upvote 0
Thì Bác quá nhiệt tình luôn Anh, Trình VBA của Bác quá đỉnh, Bác làm từng code em học hỏi nhưng có hiểu chút ít.
Em có đọc về dic nhưng chưa hiểu lắm, có gì em sẽ hỏi Bác và Anh.

Chúc Anh buổi tối vui.
 
Upvote 0
Thì Bác quá nhiệt tình luôn Anh, Trình VBA của Bác quá đỉnh, Bác làm từng code em học hỏi nhưng có hiểu chút ít.
Không nên nói người khác như vậy. Trên đời này không ai dám nhận mình là "đỉnh" đâu.
Núi nầy còn có núi khác cao hơn, huống chi con người chưa chắc cao hơn cái "gò ...".
 
Upvote 0
Không nên nói người khác như vậy. Trên đời này không ai dám nhận mình là "đỉnh" đâu.
Núi nầy còn có núi khác cao hơn, huống chi con người chưa chắc cao hơn cái "gò".
Dạ, đúng rồi Bác, tại vì em ngưỡng mộ Bác quá, chưa tới mấy giây mà Bác đã cho những code mới.
mà Bác ơi, em có ý kiến thế này, quê em có loại rượu nếp đỏ rất là ngon, Em biếu Bác được không?

Em cảm ơn Bác nhiều!
 
Upvote 0
Chỉnh sao cho không còn "#N/A", chỉ lọc "#/#" thôi nhé.
PHP:
Public Sub SAOA_NON()
Dim sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
With Sheets("SAOA")
    sArr = .Range("a2", .Range("a2").End(xlDown)).Resize(, 14).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 14)
End With
For I = 1 To R
    If sArr(I, 13) = 0 Then
        K = K + 1
        For J = 1 To 14
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
For I = 1 To R
    If CStr(sArr(I, 13)) = "#/#" Then
        K = K + 1
        For J = 1 To 14
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheets("SAOA non stock")
    .Range("A2").Resize(10000, 15).ClearContents
    .Range("A2").Resize(K, 14) = dArr
End With
End Sub
Chú ý là SAOA không có cột STOCK, chỉ có Stock 22.10. Đã nhắc là phải viết chính xác tên cột, không viết tắt được.
Dạ, code chạy ra đúng rồi Bác ơi. Tối hôm nay dừng ở đây Bác nhé,làm tiếp Bác nhé!
Thôi khuya rồi em chúc Bác ngủ ngon.
 
Upvote 0
Dạ, đúng rồi Bác, tại vì em ngưỡng mộ Bác quá, chưa tới mấy giây mà Bác đã cho những code mới.
mà Bác ơi, em có ý kiến thế này, quê em có loại rượu nếp đỏ rất là ngon, Em biếu Bác được không?

Em cảm ơn Bác nhiều!
Rượu có "nguồn gốc", có bảo hành "không sỉn" là được. Nhưng "mần sao" mà uống?
Híc! Tiếp cho xong chuyện này đi. Mai tôi bận 3 ngày rồi.
 
Upvote 0
Rượu có "nguồn gốc", có bảo hành "không sỉn" là được. Nhưng "mần sao" mà uống?
Híc! Tiếp cho xong chuyện này đi. Mai tôi bận 3 ngày rồi.
Dạ, rượu em làm từ làng nghề truyền thống Bác ơi, có nguồn gốc, Bác cho em địa chỉ nhà em gửi xuống nhà Bác, xem như là món quà quê hương em
Vậy làm tiếp sheet RUPTURE Bác nhé!
Sheet Ruptute: dùng công thức dò bên sheet SAOA kết hợp Sheet GPE dùng 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 đề).
 
Upvote 0
Sheet Ruptute: dùng công thức dò bên sheet SAOA kết hợp Sheet GPE dùng 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 đề).
Không hiểu rồi. Bạn tự đọc và suy ngẫm xem người khác có thể hiểu không, chứ tôi thì thua. Thôi để 3 ngày sau nếu chưa có người giúp thì tôi tiếp.
Mai phải "cởi Trâu" đi đi hơn 200km. Nghỉ thôi.
Quà thì chưa dám nhận.
Chúc bạn ngủ ngon.
 
Upvote 0
Không hiểu rồi. Bạn tự đọc và suy ngẫm xem người khác có thể hiểu không, chứ tôi thì thua. Thôi để 3 ngày sau nếu chưa có người giúp thì tôi tiếp.
Mai phải "cởi Trâu" đi đi hơn 200km. Nghỉ thôi.
Quà thì chưa dám nhận.
Chúc bạn ngủ ngon.
Dạ em cũng chúc Bác ngủ ngon.
Một lần nữa em cảm ơn Bác nhiều!@
 
Upvote 0
Dạ, rượu em làm từ làng nghề truyền thống Bác ơi, có nguồn gốc, Bác cho em địa chỉ nhà em gửi xuống nhà Bác, xem như là món quà quê hương em
Vậy làm tiếp sheet RUPTURE Bác nhé!
Sheet Ruptute: dùng công thức dò bên sheet SAOA kết hợp Sheet GPE dùng 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 đề).
3 ngày rồi mà chưa có người giúp, bạn vẫn chưa giải thích rõ cách lấy dữ liệu.
Bạn xóa cái giải thích màu đỏ trên đi. Viết lại cho người khác hiểu xem sao.
 
Upvote 0
3 ngày rồi mà chưa có người giúp, bạn vẫn chưa giải thích rõ cách lấy dữ liệu.
Bạn xóa cái giải thích màu đỏ trên đi. Viết lại cho người khác hiểu xem sao.
Dạ mấy ngày nay em bận đi công tác bác ơi, trưa em về em diễn giải và em gửi file cho Bác,

Em cảm ơn Bác.
 
Upvote 0
3 ngày rồi mà chưa có người giúp, bạn vẫn chưa giải thích rõ cách lấy dữ liệu.
Bạn xóa cái giải thích màu đỏ trên đi. Viết lại cho người khác hiểu xem sao.
Bác ơi nhờ Bác giúp em 2 sheet này nữa(sheet TOP 30, Sheet Negatif Margin)
sheet RUPTUTE(em có làm công thức trong sheet GPE ở cột GHI CHÚ.)(lọc những giá trị số rồi copy dữ liệu của sheet GPE rồi dán vào ô D2(sheet RUPTURE)
sheet TOP 30:
TOP 30 SẢN PHẨM CHẠY THEO SỐ LƯỢNG.
lọc cột E(Sale Qty) ở sheet SALE DETAIL từ cao đến thấp rồi copy 30 dòng rồi dán vào ô A3(sheet TOP 30)
TOP 30 SẢN PHẨM CHẠY THEO GIÁ TRỊ
Lọc cột F(SALES(TO)ở sheet SALE DETAIL từ cao đến thấp rồi copy 30 dòng rồi dán vào ô A35(sheet TOP 30)
sheet Negatif Margin(lọc cột K(Margin%) ở sheet SALE DETAIL giá trị nhỏ hơn 0 rồi copy dữ liệu dán vào ô A2.(sheet SALE DETAIL)
ở cột K(Margin%) ở sheet RUTURE sắp xếp từ cao đến thấp rồi định dạng 10 giá trị thấp nhấ(BOTTOM 10) định dạng màu đỏ.

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

File đính kèm

Upvote 0
sheet RUPTUTE(em có làm công thức trong sheet GPE ở cột GHI CHÚ.)(lọc những giá trị số rồi copy dữ liệu của sheet GPE rồi dán vào ô D2(sheet RUPTURE)
Chạy thử cái này cho file cũ, cái khác tính sau.
PHP:
Public Sub S_Rupture()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("GPE")
    sArr = .Range("D3", .Range("D1000000").End(xlUp)).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 14)
End With
For I = 1 To R
    If Not Dic.Exists(sArr(I, 1)) Then Dic.Item(sArr(I, 1)) = ""
Next I
With Sheets("SAOA")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 14).Value
    R = UBound(sArr)
End With
For I = 1 To R
    If Dic.Exists(sArr(I, 2)) Then
        K = K + 1
        For J = 1 To 14
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheets("RUPTURE")
    .Range("A2:A10000").Resize(, 14).ClearContents
    .Range("A2").Resize(K, 14) = dArr
End With
Set Dic = Nothing
End Sub
Xong file trước. Dữ liệu 16MB.
File mới "lạ hoắc" không có trong "bộ nhớ" của tôi.
Để riêng đó tính sau
 
Lần chỉnh sửa cuối:
Upvote 0
Chạy thử cái này, cái khác tính sau.
PHP:
Public Sub S_Rupture()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, R As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("GPE")
    sArr = .Range("D3", .Range("D1000000").End(xlUp)).Value
    R = UBound(sArr): ReDim dArr(1 To R, 1 To 14)
End With
For I = 1 To R
    If Not Dic.Exists(sArr(I, 1)) Then Dic.Item(sArr(I, 1)) = ""
Next I
With Sheets("SAOA")
    sArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 14).Value
    R = UBound(sArr)
End With
For I = 1 To R
    If Dic.Exists(sArr(I, 2)) Then
        K = K + 1
        For J = 1 To 14
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheets("RUPTURE")
    .Range("A2:A10000").Resize(, 14).ClearContents
    .Range("A2").Resize(K, 14) = dArr
End With
Set Dic = Nothing
End Sub
Xong file trước. Dữ liệu 16MB.
File mới "lạ hoắc" không có trong "bộ nhớ" của tôi.
Để riêng đó tính sau
Nhờ Bác kiểm tra giúp em, nó lấy bị lệch dòng Bác . ở sheet RUPTURE.
Code Bác lấy ở sheet SAOA copy qua chứ không phải sheet GPE.nên xảy ra lấy sẽ bị lệch dòng.
ý em là copy những giá trị số thõa mãn ở sheet GPE sang Sheet Rupture.
Nhờ Bác chỉnh sửa code ở sheet HIGH STOCK ở cột CODE, BARCODE là dạng text, em dịnh dạng text rồi nhưng khi chạy code ra dạng số khoa học,.

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

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nhờ Bác kiểm tra giúp em, nó lấy bị lệch dòng Bác . ở sheet RUPTURE.
Code Bác lấy ở sheet SAOA copy qua chứ không phải sheet GPE.nên xảy ra lấy sẽ bị lệch dòng.
ý em là copy những giá trị số thõa mãn ở sheet GPE sang Sheet Rupture.
Nhờ Bác chỉnh sửa code ở sheet HIGH STOCK ở cột CODE, BARCODE là dạng text, em dịnh dạng text rồi nhưng khi chạy code ra dạng số khoa học,.

Em cảm ơn Bác nhiều!
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
            dArr(K, 4) = "'" & sArr(I, 4)
        End If
    Next I
With Sheets("HIGH STOCK")
    .Columns("BA:BR").NumberFormat = "@"
    .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
PHP:
Public Sub S_Rupture()
Dim Dic As Object, sArr(), dArr(), tArr(), I As Long, J As Long, K As Long, R As Long, Rws As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("SAOA")
    tArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 14).Value2
    R = UBound(tArr): ReDim dArr(1 To R, 1 To 21)
    For I = 1 To R
        If Not Dic.Exists(tArr(I, 2)) Then Dic.Item(tArr(I, 2)) = I
    Next I
End With
With Sheets("GPE")
    sArr = .Range("A3", .Range("A1000000").End(xlUp)).Resize(, 18).Value2
    R = UBound(sArr)
    For I = 1 To R
        If Dic.Exists(sArr(I, 4)) Then
            K = K + 1: Rws = Dic.Item(sArr(I, 4))
            dArr(K, 1) = tArr(Rws, 3): dArr(K, 2) = tArr(Rws, 4): dArr(K, 3) = tArr(Rws, 6)
            For J = 1 To 18
                dArr(K, J + 3) = sArr(I, J)
            Next J
        End If
    Next I
End With
With Sheets("RUPTURE")
    .Range("A2:A100000").Resize(, 21).ClearContents
    .Range("A2").Resize(K, 21) = dArr
End With
Set Dic = Nothing
End Sub
 
Upvote 0
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
            dArr(K, 4) = "'" & sArr(I, 4)
        End If
    Next I
With Sheets("HIGH STOCK")
    .Columns("BA:BR").NumberFormat = "@"
    .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
PHP:
Public Sub S_Rupture()
Dim Dic As Object, sArr(), dArr(), tArr(), I As Long, J As Long, K As Long, R As Long, Rws As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("SAOA")
    tArr = .Range("A2", .Range("A2").End(xlDown)).Resize(, 14).Value2
    R = UBound(tArr): ReDim dArr(1 To R, 1 To 21)
    For I = 1 To R
        If Not Dic.Exists(tArr(I, 2)) Then Dic.Item(tArr(I, 2)) = I
    Next I
End With
With Sheets("GPE")
    sArr = .Range("A3", .Range("A1000000").End(xlUp)).Resize(, 18).Value2
    R = UBound(sArr)
    For I = 1 To R
        If Dic.Exists(sArr(I, 4)) Then
            K = K + 1: Rws = Dic.Item(sArr(I, 4))
            dArr(K, 1) = tArr(Rws, 3): dArr(K, 2) = tArr(Rws, 4): dArr(K, 3) = tArr(Rws, 6)
            For J = 1 To 18
                dArr(K, J + 3) = sArr(I, J)
            Next J
        End If
    Next I
End With
With Sheets("RUPTURE")
    .Range("A2:A100000").Resize(, 21).ClearContents
    .Range("A2").Resize(K, 21) = dArr
End With
Set Dic = Nothing
End Sub
Đối với sheet HIGH STOCK ra đúng rồi Bác ơi.(Vây trong code Bác có dòng này:
.Columns("BA:BR").NumberFormat = "@"(mà trong sheet HIGH STOCK dữ liệu ở cột này không có nhờ Bác giải thích giúp em hiểu.
Còn đối với sheet Rupture code Bác có lấy dữ liệu bên sheet GPE dán vào ô D2. em muốn copy rồi dán vào ô D2(3 cột A, B,C là có công thức đó Bác. code Bác lấy như hình.
Em cảm ơn Bác nhiều!
upload_2017-6-21_11-25-5.png
upload_2017-6-21_11-22-26.png
 
Upvote 0
Đối với sheet HIGH STOCK ra đúng rồi Bác ơi.(Vây trong code Bác có dòng này:
.Columns("BA:BR").NumberFormat = "@"(mà trong sheet HIGH STOCK dữ liệu ở cột này không có nhờ Bác giải thích giúp em hiểu.
Còn đối với sheet Rupture code Bác có lấy dữ liệu bên sheet GPE dán vào ô D2. em muốn copy rồi dán vào ô D2(3 cột A, B,C là có công thức đó Bác. code Bác lấy như hình.
Em cảm ơn Bác nhiều!
View attachment 177975
View attachment 177974
Công thức 3 cột đó là gì, viết luôn trong code, "ba rọi" nửa code, nửa công thức làm gì?
 
Upvote 0
Web KT

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

Back
Top Bottom