Найдите ячейку, которая соответствует тексту «X», затем найдите самую последнюю дату в VBA Excel. - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть 3 столбца:

Col B: диапазон имен

Col E: диапазон дат

Col G: значения в долларах

Iхотите, чтобы код указывался в столбце B, сопоставлялся с любым именем, которое я поместил в ячейку P5, а затем в столбце E укажите, какая дата является самым поздним для этого имени, и верните значение в долларах США.Прямо сейчас у меня есть коды отдельно, но я не знаю, как их соединить:

 Function Max_Date()
   Max_Date = Application.WorksheetFunction.Max(Columns("Y"))
   MsgBox CDate(Max_Date)
 End Function

Function FindText()
 Dim rngX As Range 
  Set rngX = ActiveSheet.Range("B:B").Find(Range("P5"), lookat:=xlPart)
   If Not rngX Is Nothing Then
    MsgBox "Found at " & rngX.Address
   End If 
End Function

1 Ответ

0 голосов
/ 17 апреля 2019

Вы могли бы подумать о чем-то вроде этого:

Public Function GetDollar(NOM) As Double

Dim RNG1 As String, RNG2 As String, RNG3 As String, LR As Double
With ActiveWorkbook.Sheets(1)
    LR = .Cells(Rows.Count, 2).End(xlUp).Row
    RNG1 = .Range(.Cells(1, 2), .Cells(LR, 2)).Address
    RNG2 = .Range(.Cells(1, 3), .Cells(LR, 3)).Address
    RNG3 = .Range(.Cells(1, 4), .Cells(LR, 4)).Address
    GetDollar = .Evaluate("=INDEX(" & RNG3 & ",MATCH(""" & NOM & """&MAX((" & RNG1 & "=""" & NOM & """)*" & RNG2 & ")," & RNG1 & "&" & RNG2 & ",0))")
End With

End Function

enter image description here

Если в вашем случае вы хотите иметь оба столбца E иG, вам понадобятся еще два UDF, поскольку вы не можете изменять значения других ячеек с помощью UDF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...