美好的一天,非常需要有关某个excel查找/返回值的帮助。我尝试过INDEX / MATCH,VLOOKUP和VBA,但所有这些都失败了,因为我并不熟悉那些。
查找值将是productID和ContractID以及更改类型。在这种情况下,它是具有多个值的“删除”。我想根据Valid From列的最新日期返回Old Value列中的值。因此,
查看价值 - 产品ID - 合同ID - 改变类型
然后选择多个结果的标准将是有效期的最新日期。请帮忙。最诚挚的问候。
答案 0 :(得分:0)
也许这会奏效吗?不确定,你可以尝试一下,看看是否:
=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?
答案 1 :(得分:0)
这是一个(非常基本的)宏,应该以某种方式为您提供所需的内容,但要注意它没有经过优化,在大数据上可能会非常慢,而且它假设日期列的格式为日期类型。给定条件,它为您提供与条件匹配的行(作为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
这是起点。使其适用于您的数据,然后尝试优化它。希望它有所帮助。