Tìm giá trị (1 người xem)

  • Thread starter Thread starter parkjun
  • Ngày gửi Ngày gửi
Liên hệ QC

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

parkjun

Thành viên mới
Tham gia
12/10/12
Bài viết
43
Được thích
2
Dear các bạn,

Nhờ các bạn xem có các xử cho vấn đề của mình không với nhé :D
Mình có file đính kèm, trong đó 1 mã nhân viên sẽ được lặp lại nhiều lần, trong đó số xuất hiện đầu tiên là số đi với thông tin ngày ký gần đây nhất. Nếu sử dụng hàm countif thì mình có thể lấy được giá trị gần nhất (là 1). Tuy nhiên hiện tại mình muốn lấy số xuất hiện lần đầu với ngày ký xa nhất (là số lớn nhất của từng mã nhân viên bên côt Countif) thì hiện tại đang loay hoay để tìm cách vì với mỗi mã nhân viên thì số lớn nhất bên cột countif lại khác nhau
Vậy nhờ các bạn xem có cách nào ko nhé (ko sử dụng được cột ngày ký vì cột đó thông tin không đầy đủ)

Cảm ơn các bạn
 

File đính kèm

Dear các bạn,

Nhờ các bạn xem có các xử cho vấn đề của mình không với nhé :D
Mình có file đính kèm, trong đó 1 mã nhân viên sẽ được lặp lại nhiều lần, trong đó số xuất hiện đầu tiên là số đi với thông tin ngày ký gần đây nhất. Nếu sử dụng hàm countif thì mình có thể lấy được giá trị gần nhất (là 1). Tuy nhiên hiện tại mình muốn lấy số xuất hiện lần đầu với ngày ký xa nhất (là số lớn nhất của từng mã nhân viên bên côt Countif) thì hiện tại đang loay hoay để tìm cách vì với mỗi mã nhân viên thì số lớn nhất bên cột countif lại khác nhau
Vậy nhờ các bạn xem có cách nào ko nhé (ko sử dụng được cột ngày ký vì cột đó thông tin không đầy đủ)

Cảm ơn các bạn
Hàm thì mình không biết nhưng dùng VBA thì được.
 
Giả thiết: các mã giống nhau ở các dòng liên tiếp nhau - chỉ cần cho INDEX

Nhập mã cần kiểm tra vào F1. Kết quả ở G1.
Công thức cho G1
Mã:
=INDEX(B2:B10000,MATCH(F1,A2:A10000,0)+COUNTIF(A2:A10000,F1)-1)

hoặc

=LOOKUP(2,1/(A2:A10000=F1),B2:B10000)

Nếu cột B là những số thứ tự liên tiếp tính từ 1 cho mỗi mã thì
Mã:
=COUNTIF(A2:A10000,F1)

Nếu là ý khác thì hãy trình bầy lại rõ ràng.
 
Hi bạn,

Nếu có thể thì nhờ bạn viết giúp mình đoạn VBA để chạy thử nhé. Cảm ơn bạn.
Bạn thử.
Mã:
Sub laygiatri()
    Dim arr, i As Long, lr As Long, dk As String, dic As Object, kq
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet1")
         lr = .Range("A" & Rows.Count).End(xlUp).Row
         If lr = 1 Then Exit Sub
         arr = .Range("A2:B" & lr).Value
         ReDim kq(1 To UBound(arr), 1 To 1)
         For i = UBound(arr) To 1 Step -1
             dk = arr(i, 1)
             If Not dic.exists(dk) Then
                dic.Add dk, i
                kq(i, 1) = arr(i, 1)
             End If
         Next i
         .Range("B2:B" & lr).Value = kq
   End With
End Sub
 
Giả thiết: các mã giống nhau ở các dòng liên tiếp nhau - chỉ cần cho INDEX

Nhập mã cần kiểm tra vào F1. Kết quả ở G1.
Công thức cho G1
Mã:
=INDEX(B2:B10000,MATCH(F1,A2:A10000,0)+COUNTIF(A2:A10000,F1)-1)

hoặc

=LOOKUP(2,1/(A2:A10000=F1),B2:B10000)

Nếu cột B là những số thứ tự liên tiếp tính từ 1 cho mỗi mã thì
Mã:
=COUNTIF(A2:A10000,F1)

Nếu là ý khác thì hãy trình bầy lại rõ ràng.
Bạn thử.
Mã:
Sub laygiatri()
    Dim arr, i As Long, lr As Long, dk As String, dic As Object, kq
    Set dic = CreateObject("scripting.dictionary")
    With Sheets("sheet1")
         lr = .Range("A" & Rows.Count).End(xlUp).Row
         If lr = 1 Then Exit Sub
         arr = .Range("A2:B" & lr).Value
         ReDim kq(1 To UBound(arr), 1 To 1)
         For i = UBound(arr) To 1 Step -1
             dk = arr(i, 1)
             If Not dic.exists(dk) Then
                dic.Add dk, i
                kq(i, 1) = arr(i, 1)
             End If
         Next i
         .Range("B2:B" & lr).Value = kq
   End With
End Sub
Mình đã thử cả 2 cách: theo hàm của batman1 và theo VBA của snow25 và đều OK. Cảm ơn 2 bạn đã giúp nhé
 
Giả thiết: các mã giống nhau ở các dòng liên tiếp nhau - chỉ cần cho INDEX

Nhập mã cần kiểm tra vào F1. Kết quả ở G1.
Công thức cho G1
Mã:
=INDEX(B2:B10000,MATCH(F1,A2:A10000,0)+COUNTIF(A2:A10000,F1)-1)

hoặc

=LOOKUP(2,1/(A2:A10000=F1),B2:B10000)

Nếu cột B là những số thứ tự liên tiếp tính từ 1 cho mỗi mã thì
Mã:
=COUNTIF(A2:A10000,F1)

Nếu là ý khác thì hãy trình bầy lại rõ ràng.
Có thể cho mình hỏi số 2 (Lookup_value) trong làm LOOKUP(2,1/(A2:A10000=F1),B2:B10000) và 1/(A2:A10000=F1 ý nghĩa ntn nhỉ? đang ngồi ngâm cứu nhưng hơi khó hiểu :)
 
Có thể cho mình hỏi số 2 (Lookup_value) trong làm LOOKUP(2,1/(A2:A10000=F1),B2:B10000) và 1/(A2:A10000=F1 ý nghĩa ntn nhỉ? đang ngồi ngâm cứu nhưng hơi khó hiểu :)
Tôi đã giải thích ở bài #6 gần 6 năm trước


Và 1 năm 7 tháng trước ở bài #18


Trên GPE cũng giải thích nhiều.
 
Tôi đã giải thích ở bài #6 gần 6 năm trước


Và 1 năm 7 tháng trước ở bài #18


Trên GPE cũng giải thích nhiều.
Cảm ơn bạn rất nhiều, nhờ vậy mấy bài đó mà mình học đc nhiều thứ :)
 
Web KT

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

Back
Top Bottom