Trang 2 của 3 Đầu tiênĐầu tiên 123 CuốiCuối
Kết quả 11 đến 20 của 22

Chủ đề: Tìm số lớn nhất, lớn 2....trong 1 mảng theo điều kiện cho trước.

  1. #11
    manhdc Guest
    Không ai giúp em sao? @@

  2. #12
    meolamdep Guest
    Bạn nên nêu mục đích cuối cùng khi bạn muốn kết quả như vậy, có thể mọi người sẽ có giải pháp thay thế.

  3. #13
    huuhus Guest
    Trích dẫn Gửi bởi arexthena
    Bạn nên nêu mục đích cuối cùng khi bạn muốn kết quả như vậy, có thể mọi người sẽ có giải pháp thay thế.
    Chỉ là như này: Tìm ở cột J nếu dữ liệu trùng với cột AA thì sẽ lấy Lot ở cột B tương ứng. Bởi vì mỗi dữ liệu ở cột AA sẽ trùng rất nhiều dữ liệu cột J vì thế sẽ lấy tất cả các Lot tương ứng cột B. Tuy nhiên, Lot ở cột B là số nên e muốn nó được lấy từ Lot lớn nhất đến Lot nhỏ nhất. Và sẽ được điền vào cột AB (LOT lớn nhất), cột AC (LOT lớn 2), cột AD (LOT lớn 3)....đến hết LOT.
    Ví dụ: Mã: PSQF1030WA-VB ở cột AA thì ở cột J có 4 mã đó. Tương ứng với mã đó là các LOT: 111958, 112773, 113349, 114384. Các LOT này sẽ được điền vào các cột AB, AC, AD, AE, AF..... theo thứ tự lớn đến bé. Ở vì dụ này thì AB: 114384, AC: 113349, AD: 112773, AE: 111958.
    P/S: Em đã viết code trong file gửi lên nhưng chỉ chạy dc khoảng 500 mã ở cột AA thôi. Nếu nhiều hơn thì quá lâu ạ. Bác có thể coi qua.

  4. #14
    namplh Guest
    Trích dẫn Gửi bởi phamsuabe
    Chỉ là như này: Tìm ở cột J nếu dữ liệu trùng với cột AA thì sẽ lấy Lot ở cột B tương ứng. Bởi vì mỗi dữ liệu ở cột AA sẽ trùng rất nhiều dữ liệu cột J vì thế sẽ lấy tất cả các Lot tương ứng cột B. Tuy nhiên, Lot ở cột B là số nên e muốn nó được lấy từ Lot lớn nhất đến Lot nhỏ nhất. Và sẽ được điền vào cột AB (LOT lớn nhất), cột AC (LOT lớn 2), cột AD (LOT lớn 3)....đến hết LOT.
    Ví dụ: Mã: PSQF1030WA-VB ở cột AA thì ở cột J có 4 mã đó. Tương ứng với mã đó là các LOT: 111958, 112773, 113349, 114384. Các LOT này sẽ được điền vào các cột AB, AC, AD, AE, AF..... theo thứ tự lớn đến bé. Ở vì dụ này thì AB: 114384, AC: 113349, AD: 112773, AE: 111958.
    P/S: Em đã viết code trong file gửi lên nhưng chỉ chạy dc khoảng 500 mã ở cột AA thôi. Nếu nhiều hơn thì quá lâu ạ. Bác có thể coi qua.
    Các LOT này sẽ được điền vào các cột AB, AC, AD, AE, AF..... theo thứ tự lớn đến bé
    Tôi đang thắc mắc là tại sao các lot phải được trình bày ngang như vậy, kiểu data này sẽ rất khó theo dõi. Nếu chỉ là lấy những lot của partcode có trong cột AA, và có thể trình bày theo hàng dọc, tôi đưa cho bạn ý tưởng là tạo thêm cột phụ cho bảng bên trái, vlookup từ cột AA (xem những giá trị nào của bảng bên trái có trong cột AA, nếu ko có sẽ trả về #N/A). Sau đó pivot table cho bảng bên trái, filter out tất cả các giá trị #N/A đi là xong.

    Thân.

  5. #15
    khanhhoangsg Guest
    Trích dẫn Gửi bởi arexthena
    Các LOT này sẽ được điền vào các cột AB, AC, AD, AE, AF..... theo thứ tự lớn đến bé
    Tôi đang thắc mắc là tại sao các lot phải được trình bày ngang như vậy, kiểu data này sẽ rất khó theo dõi. Nếu chỉ là lấy những lot của partcode có trong cột AA, và có thể trình bày theo hàng dọc, tôi đưa cho bạn ý tưởng là tạo thêm cột phụ cho bảng bên trái, vlookup từ cột AA (xem những giá trị nào của bảng bên trái có trong cột AA, nếu ko có sẽ trả về #N/A). Sau đó pivot table cho bảng bên trái, filter out tất cả các giá trị #N/A đi là xong.

    Thân.
    Bởi vì e có khoảng 50 file như thế này và dữ liệu ở mỗi file lại được lấy từ 1 nguồn khác. Sau khi sử lý ở đây xong e còn cần cho các cv sau nữa. Và nó biến động theo thời gian. E muốn show tất cả các Lot của nó ra để sử dụng thuận lợi hơn khi làm vlookup or việc khác. Vì thế e mới muốn viết code bên trong để lấy giá trị value chứ ko làm công thức

  6. #16
    zphot9x Guest
    hi vọng là đúng ý bạn

  7. #17
    hocon84 Guest
    Góp thêm đoạn code

    Mã:
    Sub TimTrung()
    Dim BJ, AA As Variant, kq(), i, j, k As Long
    BJ = [B10].Resize([B600000].End(3).Row - 9, 9).Value
    AA = [AA10].Resize([AA60000].End(3).Row - 9)
    For i = UBound(BJ) To 1 Step -1
        For j = 1 To UBound(AA)
            If BJ(i, 9) = AA(j, 1) Then
                k = k + 1
                ReDim Preserve kq(1 To k)
                kq(k) = BJ(i, 1)
                Exit For
            End If
        Next j
    Next i
    If k Then
    [AB10:XFD10].Clear
    [AB10].Resize(, k).Value = kq
    End If
    End Sub
    p/s: nếu làm như bạn minhtungph như trên, tôi nghĩ chắc dùng find rồi chép kết quả vào mảng sẻ nhanh hơn

    ============================
    Dùng dic tốc độ tăng đáng kể

    Mã:
    Sub TimTrung()
    Dim BJ, AA As Variant, kq(), i, j, k As Long, d As Object
    BJ = [B10].Resize([B600000].End(3).Row - 9, 9).Value
    AA = [AA10].Resize([AA60000].End(3).Row - 9)
    Set d = CreateObject("Scripting.Dictionary")
    
    For j = 1 To UBound(AA)
        If Not d.Exists(AA(j, 1)) Then d.Add AA(j, 1), ""
    Next j
    
    For i = UBound(BJ) To 1 Step -1
        If d.Exists(BJ(i, 9)) Then
            k = k + 1
            ReDim Preserve kq(1 To k)
            kq(k) = BJ(i, 1)
        End If
    Next i
    
    If k Then
    [AB10:XFD10].Clear
    [AB10].Resize(, k).Value = kq
    End If
    Set d = Nothing
    End Sub

  8. #18
    huongcao Guest
    Trích dẫn Gửi bởi Let'GâuGâu
    Góp thêm đoạn code

    <div class="bbcode_container">
    <div class="bbcode_description">Code:
    </div>

    </div>
    </div>
    </div>
    Cảm ơn bạn minhtungph nhưng cái đó chỉ là show tất cả các LOT ra thôi.
    Làm theo bác Let'gaugau là nhanh hơn rất nhiều và em đang hướng theo cách đó. Nhưng có vẻ vẫn chưa đúng. 2 bác đều đang show tất cả các Lot của tất cả các mã ra.
    Cái em muốn là tìm Lot ở cột B theo mã ở cột AA ạ. Có nghĩa là không phải show ra 1 dòng như thế. Mà sẽ tìm từng mã có bao nhiêu Lot thì show ra đó.

  9. #19
    baobinh Guest
    Trích dẫn Gửi bởi phamsuabe
    Cảm ơn bạn minhtungph nhưng cái đó chỉ là show tất cả các LOT ra thôi.
    Làm theo bác Let'gaugau là nhanh hơn rất nhiều và em đang hướng theo cách đó. Nhưng có vẻ vẫn chưa đúng. 2 bác đều đang show tất cả các Lot của tất cả các mã ra.
    Cái em muốn là tìm Lot ở cột B theo mã ở cột AA ạ.
    ko biết nữa
    kết quả chạy code ra 6702 mã, trong cột J của bạn có 6717 mã
    tôi dùng dictionary, tức là mã nào ở cột J mà có mặt ở cột ÂA thì nó mới lấy, tôi nghĩ là nó ko sai hoặc ko hiểu ý bạn là làm cái gì

  10. #20
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Let'GâuGâu
    ko biết nữa
    kết quả chạy code ra 6702 mã, trong cột J của bạn có 6717 mã
    tôi dùng dictionary, tức là mã nào ở cột J mà có mặt ở cột ÂA thì nó mới lấy, tôi nghĩ là nó ko sai hoặc ko hiểu ý bạn là làm cái gì
    Sắp đến đích zùi đó ạ. Cột AA có hơn 2000 mã. Mỗi mã ở cột AA sẽ có nhiều LOT ở cột B. Ví dụ: Mã A ở cột AA10 sẽ có 3 Lot thi điền 3 Lot vào AB10, AC10, AD10. Tiếp đến Mã B ở cột AA11 có 4 lot thì điền 4 Lot vào AB11, AC11, AD11,AE11. Cứ thế đến hết 2000 mã ở cột AA ạ. Bác hiểu ý em chứ ạ?
    Hay bác inbox cho em cái contact, e nói cho bác dễ hiểu. [IMG]images/smilies/a42.gif[/IMG]

Trang 2 của 3 Đầu tiênĐầu tiên 123 CuốiCuối

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •