Giúp đỡ: Tìm kiếm trả về điều kiện phụ có giá trị ngày gần nhất (1 người xem)

Liên hệ QC

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

nguyenmtuan

Thành viên chính thức
Tham gia
17/6/16
Bài viết
78
Được thích
4
Chào các bác.
Nhờ các bác giúp đỡ em với ạ. Chẳng là ở file đính kèm sheets "SHEET" là các P/N mà ở đấy em muốn tìm các giá trị P/N tương ứng ở sheets "ALL" nhưng với điều kiện là có ngày gần với ngày hiện hành trên máy nhất và điền vào cột "DATE" và cột S/N các SN tương ứng.
Cám ơn mọi người
 

File đính kèm

Chào các bác.
Nhờ các bác giúp đỡ em với ạ. Chẳng là ở file đính kèm sheets "SHEET" là các P/N mà ở đấy em muốn tìm các giá trị P/N tương ứng ở sheets "ALL" nhưng với điều kiện là có ngày gần với ngày hiện hành trên máy nhất và điền vào cột "DATE" và cột S/N các SN tương ứng.
Cám ơn mọi người
Cho cái ví dụ coi.
 
Ví dụ như tìm P/N: 98D29003501000 thì nó sẽ trả về SN 69591201 và DATE là: 09-04-2019 (vì date này là ngày gần ngày hiện tại nhất).
Dùng hàm tự tạo nhé.
Mã:
Function laygiatri(ByVal mang As Range, ByVal dk As String, Optional ByVal so As Boolean = True)
         Dim ngay As Date, i As Long, arr, a As Long, SN As String, min As Long
         min = 100000
         arr = mang.Value
         For i = 1 To UBound(arr, 1)
             If UCase(dk) = UCase(arr(i, 1)) Then
                a = CLng(arr(i, 3)) - CLng(Date)
                If a < min And a Then
                   min = a: ngay = arr(i, 3): SN = arr(i, 2)
                End If
             End If
         Next i
         If so = True Then
            laygiatri = SN
         Else
            laygiatri = ngay
         End If
End Function
Mã:
=laygiatri(ALL!$B$2:$D$2919,SHEET!B2,1)
=laygiatri(ALL!$B$2:$D$2919,SHEET!B2,0)
 

File đính kèm

Ví dụ như tìm P/N: 98D29003501000 thì nó sẽ trả về SN 69591201 và DATE là: 09-04-2019 (vì date này là ngày gần ngày hiện tại nhất).
- Tại C2 nhập công thức này rồi copi xuống IFERROR(INDEX(ALL!$C$2:$C$5000;MATCH(B2;ALL!$B$2:$B$5000;0));"")
- Tại D2 nhập công thức này rồi copi xuống IFERROR(INDEX(ALL!$D$2:$D$5000;MATCH(B2;ALL!$B$2:$B$5000;0));"")
(Xem File đính kèm)
 

File đính kèm

Dùng hàm tự tạo nhé.
Mã:
Function laygiatri(ByVal mang As Range, ByVal dk As String, Optional ByVal so As Boolean = True)
         Dim ngay As Date, i As Long, arr, a As Long, SN As String, min As Long
         min = 100000
         arr = mang.Value
         For i = 1 To UBound(arr, 1)
             If UCase(dk) = UCase(arr(i, 1)) Then
                a = CLng(arr(i, 3)) - CLng(Date)
                If a < min And a Then
                   min = a: ngay = arr(i, 3): SN = arr(i, 2)
                End If
             End If
         Next i
         If so = True Then
            laygiatri = SN
         Else
            laygiatri = ngay
         End If
End Function
Mã:
=laygiatri(ALL!$B$2:$D$2919,SHEET!B2,1)
=laygiatri(ALL!$B$2:$D$2919,SHEET!B2,0)
Cám ơn bác nhiều, liệu có cách nào mà dùng hàm ko cần code ko bác nhỉ?
 
Cám ơn bác nhiều, liệu có cách nào mà dùng hàm ko cần code ko bác nhỉ?
Cột Ngày đã được xếp từ nhỏ đến lớn.
Bạn dùng công thức này:
PHP:
C2 =LOOKUP(2;1/(ALL!$B$2:$B$2919=B2);ALL!$C$2:$C$2919)
D2 =LOOKUP(2;1/(ALL!$B$2:$B$2919=B2);ALL!$D$2:$D$2919)
 
Cám ơn bác nhiều, liệu có cách nào mà dùng hàm ko cần code ko bác nhỉ?
Bác cho em hỏi trong trường hợp em chỉ muốn lấy ngày là từ ngày hôm nay trở về tương lại thôi ko cần ngày trong quá khứ thì code kia phải thay đổi như thế nào?
Cám ơn bác.
Bài đã được tự động gộp:

Dùng hàm tự tạo nhé.
Mã:
Function laygiatri(ByVal mang As Range, ByVal dk As String, Optional ByVal so As Boolean = True)
         Dim ngay As Date, i As Long, arr, a As Long, SN As String, min As Long
         min = 100000
         arr = mang.Value
         For i = 1 To UBound(arr, 1)
             If UCase(dk) = UCase(arr(i, 1)) Then
                a = CLng(arr(i, 3)) - CLng(Date)
                If a < min And a Then
                   min = a: ngay = arr(i, 3): SN = arr(i, 2)
                End If
             End If
         Next i
         If so = True Then
            laygiatri = SN
         Else
            laygiatri = ngay
         End If
End Function
Mã:
=laygiatri(ALL!$B$2:$D$2919,SHEET!B2,1)
=laygiatri(ALL!$B$2:$D$2919,SHEET!B2,0)
Bác cho em hỏi trong trường hợp em chỉ muốn lấy ngày là từ ngày hôm nay trở về tương lại thôi ko cần ngày trong quá khứ thì code kia phải thay đổi như thế nào?
Cám ơn bác.
 
Web KT

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

Back
Top Bottom