Nhờ viết hàm tự tạo tìm kiếm và so sánh giá trị của ngày thàng ? (1 người xem)

Liên hệ QC

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

Hamedanger

Thành viên chính thức
Tham gia
2/12/14
Bài viết
60
Được thích
25
Yêu cầu e có ghi trong file đính kèm, mong được giúp đỡ
E xin cảm ơn
 

File đính kèm

Yêu cầu e có ghi trong file đính kèm, mong được giúp đỡ
E xin cảm ơn
Chưa hiểu ý bạn lắm list là vùng nào, nếu nằm ngoài [A1:A55] nhưng trong list thì kết quả như thế nào, "Nếu ngày nằm trong phạm vi A1:A55 nhưng ko có trong list thì trả về số dòng giá trị gần nhất" của list hay vùng A1:A55 , và kết quả trả về đâu (cột F)??, bạn cho vài ví dụ cụ thể đi.
 
Upvote 0
uhm, thớt nói còn mập mờ. Sửa lại mô tả rõ hơn tí đi ông.
 
Upvote 0
Hàm vitri(Ngày tìm kiếm, Vùng tìm kiếm)
Vùng tìm kiếm là một dãy ô có dữ liệu liên tục trong một cột liên tục, được sort từ nhỏ đến lớn
Dữ liệu trong file ví dụ là mẫu ạ
 
Upvote 0
Quy trở lại với bài này , sao e đặt công thức trong vba không được, mong đc giúp đỡ e đã dùng excel 2016

Sub Test()
Dim T, Rng As Range, wf As WorksheetFunction
Set Rng = Sheet1.Range("A1:A" & Sheet1.Range("A65536").End(xlUp).Row)
T = wf.IfError(wf.Match(wf.Lookup(Sheet1.Range("E10"), Rng), Rng, 1), "")
MsgBox T
End Sub
 

File đính kèm

Upvote 0
Quy trở lại với bài này , sao e đặt công thức trong vba không được, mong đc giúp đỡ e đã dùng excel 2016

Code thiếu chỗ cực kỳ quan trọng:
Mã:
Sub Test()
  Dim T, Rng As Range, wf As WorksheetFunction
  [COLOR=#ff0000]Set wf = Application.WorksheetFunction[/COLOR]
  Set Rng = Sheet1.Range("A1:A" & Sheet1.Range("A65536").End(xlUp).Row)
  T = wf.IfError(wf.Match(wf.Lookup(Sheet1.Range("E10"), Rng), Rng, 1), "")
  MsgBox T
End Sub
Chỗ màu đỏ ấy
Tuy nhiên nên sửa thành vầy mới chắc ăn:
Mã:
Sub Test()
  Dim T, Rng As Range
  Set Rng = Sheet1.Range("A1:A" & Sheet1.Range("A65536").End(xlUp).Row)
  With Application
    T = .IfError(.Match(.Lookup(Sheet1.Range("E10"), Rng), Rng, 1), "")
  End With
  MsgBox T
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Vầy cũng được (cho E2003):
PHP:
Option Explicit
Function TimDong(Rng As Range, Dat As Date)
 Dim Cls As Range, WF As Object, sRng As Range
 Dim dMAX As Date, dMIN As Date, J As Integer
 
 Set WF = Application.WorksheetFunction
 dMAX = WF.Max(Rng):                    dMIN = WF.Min(Rng)
 If Dat < dMIN Or Dat > dMAX Then
    TimDong = ""
 Else
    Set sRng = Rng.Find(Dat, , xlValues, xlWhole)
    If sRng Is Nothing Then
        
        For J = 1 To (dMAX - dMIN)
            For Each Cls In Rng
                If Cls.Value = Dat - J Then
                    TimDong = Cls.Row:  Exit Function
                End If
            Next Cls
        Next J
    Else
        TimDong = sRng.Row
    End If
 End If
End Function

Lúc đó tại [F10] ra áp công thức =TimDong(A$1:A56,E10)
 
Upvote 0
Web KT

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

Back
Top Bottom