Công thức tìm giá trị

Liên hệ QC

lacquan1

Thành viên mới
Tham gia
20/6/06
Bài viết
45
Được thích
23
Nhờ các cao thủ giúp, tôi muốn tìm công thức mà khi nhập ngày tháng vào 1 ô đã định sẵn thì ô bên cạnh nhận được giá trị tương ứng với ngày gần nhất tại CSDL .
Xin cảm ơn nhiều.
File đính kèm .
 

File đính kèm

Tìm theo kiểu này nghĩa là gì nhỉ? Tất nhiên vẫn có cách, nhưng bạn cho hỏi: nếu tôi nhập ngày tháng là 10/1/08 thì lấy giá trị nào? Ý tôi muốn nói là nếu nhập ngày trùng với ngày đầu danh sách thì lấy giá trị gì?
Như yêu cầu cũa bạn thì có thể là công thức:
Mã:
=INDEX($B$3:$B$8,MATCH(C11-1,$A$3:$A$8),1)
Tuy nhiên tôi vẫn còn do dự nếu ngày nhập vào là 10/01/08 ???
 
Tôi thì sử dụng công thức này, nhưng cũng giống Anhtuan bị N/A khi C11 là ngày 10/01/08.
Mã:
=VLOOKUP(C11-1,$A$3:$B$8,2)
 
Lần chỉnh sửa cuối:
Cảm ơn hai huynh,
cũng như ý của anhtuan1006, có thể giúp tôi khi nhập 10.01.08 thì công thức lấy giá trị của các huynh đã viết cùng nếu ko thì lấy giá trị đầu tiên của danh sách ko?
 
Bạn thử với công thức này xem:
Mã:
=VLOOKUP(C11-(C11<>$A$3),$A$3:$B$8,2,(C11<>$A$3))
ANH TUẤN
 
Tôi có chèn thêm 1 trường tên trong file đính kèm, để tìm giá trị theo ý trên và tên, xin được giúp
 

File đính kèm

Tốt nhất bạn nên đưa dử liệu thật lên 1 lần... Đở mất công nay vầy mai khác nhé...
Như dử liệu trong file thì sửa lại thành:
Mã:
[LEFT]=VLOOKUP(D11-(D11<>$A$3),$A$3:$C$8,3,(D11<>$A$3))[/LEFT]
 
Dữ liệu của tôi chỉ có vầy thôi, nhưng Code của bạn đưa ra ko dùng được vì tôi còn tìm theo cả tên nữa
Rất mong mọi cao thủ giúp đỡ
Cảm ơn nhiều lắm
 
Tranh thủ lúc BAP đi vắng cái!

Bạn dùng hàm này thử, nha!
PHP:
Option Explicit

Function DoiChieu(Rng As Range, Ngay, Ten)
 Dim lHg As Long, jZ As Long, iW As Long
 Dim iCot As Integer
 
 lHg = Rng.Rows.Count:               iCot = Rng.Columns.Count
 If iCot < 3 Or lHg < 2 Then
    DoiChieu = ""
 Else
    For jZ = 1 To lHg
        If Rng.Cells(jZ, 1) = Ngay Then Exit For
    Next jZ
    If jZ > lHg Then
        DoiChieu = ""
    Else
        For iW = jZ - 1 To 1 Step -1
            If Rng.Cells(iW, 2).Value = Ten Then Exit For
        Next iW
        If iW > 0 then DoiChieu = Rng.Cells(iW, 3)
    End If
 End If
End Function
 
anhtuan1066 đã viết:
Bắp ơi! Thử cho 1 giãi pháp bằng VBA tham khảo với....

PHP:
Function GT(Ngay As Range, Ten As Range, _
            MangNgay As Range, MangTen As Range, MangGT As Range) As Long
    Application.Volatile (False)
    If MangNgay.Columns.Count > 1 Then Exit Function
    If MangTen.Columns.Count > 1 Then Exit Function
    If MangGT.Columns.Count > 1 Then Exit Function
    If MangNgay.Rows.Count <> MangGT.Rows.Count Or _
       MangTen.Rows.Count <> MangGT.Rows.Count Then Exit Function

    Dim i As Integer, m As Integer
    Dim NgayTemp As Date, TempGT As Long
    For i = 1 To MangTen.Rows.Count
        If UCase(MangTen(i)) = UCase(Ten) Then
            If MangNgay(i) = Ngay.Value Then
                GT = MangGT(i)
                Exit Function
            ElseIf MangNgay(i) < Ngay.Value Then
                If MangNgay(i) >= NgayTemp Then
                    GT = MangGT(i)
                    NgayTemp = MangNgay(i)
                End If
            End If
        End If
    Next
End Function

Lâu ngày không đụng đến VBA nên đúng là hơi lủng củng.

Bác tham khảo !!


Thân!

To Sa tiên sinh : Uy lực của bác quả là kinh người, khâm phục!
 

File đính kèm

Web KT

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

Back
Top Bottom