好的一天,非常需要关于某个excel查找/返回值的帮助。我尝试了INDEX/MATCH、VLOOKUP和VBA,但它们都失败了,因为我对它们并不是很熟悉。

问题是这样的。
查找值将是productID和ContractID以及更改的类型。在本例中,它是"delete“,它有多个值。我想根据Valid From列中的最新日期返回旧值列中的值。因此,
查找值-产品id -合同id -更改类型
则选择多个结果的标准将是有效起始日期的最新日期。请帮帮忙。诚挚的问候。
发布于 2015-10-08 17:15:58
也许这能行得通?不确定,你可以试一下,看看它是否有效:
=SUMPRODUCT((A:A=123456)*(B:B="SGSINtest")*(C:C="delete")*(D:D=MAX(IF(AND(A:A=123456,B:B="SGSINtest,C:C=""delete"),D:D)))*(E:E))其中,A列表示产品Id,B列表示id,C列表示类型,D表示有效日期,E表示OldValue?
发布于 2015-10-08 18:05:55
下面是一个(非常基本的)宏,它应该以某种方式提供您正在寻找的东西,但要注意它没有优化,在处理大型数据时可能会非常慢,而且它假设日期列被格式化为date类型。给定条件,它将给出与条件匹配的行(作为Range对象),如果有多行匹配,则具有最高日期。如果没有与条件匹配的行,则返回"Nothing“。
Function rowWithHighestVF(productId As Long, contractId As String, typeOfChange As String) As Range
Dim r As Range, validFrom As Date, maxVF As Date: maxVF = 0
For Each r In UsedRange.Rows
If r.Cells(1) = productId And r.Cells(2) = contractId And r.Cells(3) = typeOfChange Then
validFrom = r.Cells(4)
If validFrom > maxVF Then
maxVF = validFrom
Set rowWithHighestVF = r
End If
End If
Next
If Not rowWithHighestVF Is nothing then rowWithHighestVF.Activate
End Function这是起点。让它在您的数据上工作,然后尝试对其进行优化。希望能有所帮助。
https://stackoverflow.com/questions/33011019
复制相似问题