首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel公式/Excel-宏/重复数据

Excel公式/Excel-宏/重复数据
EN

Stack Overflow用户
提问于 2015-10-08 16:52:49
回答 2查看 56关注 0票数 0

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

问题是这样的。

查找值将是productID和ContractID以及更改的类型。在本例中,它是"delete“,它有多个值。我想根据Valid From列中的最新日期返回旧值列中的值。因此,

查找值-产品id -合同id -更改类型

则选择多个结果的标准将是有效起始日期的最新日期。请帮帮忙。诚挚的问候。

EN

回答 2

Stack Overflow用户

发布于 2015-10-08 17:15:58

也许这能行得通?不确定,你可以试一下,看看它是否有效:

代码语言:javascript
复制
=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?

票数 0
EN

Stack Overflow用户

发布于 2015-10-08 18:05:55

下面是一个(非常基本的)宏,它应该以某种方式提供您正在寻找的东西,但要注意它没有优化,在处理大型数据时可能会非常慢,而且它假设日期列被格式化为date类型。给定条件,它将给出与条件匹配的行(作为Range对象),如果有多行匹配,则具有最高日期。如果没有与条件匹配的行,则返回"Nothing“。

代码语言:javascript
复制
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

这是起点。让它在您的数据上工作,然后尝试对其进行优化。希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33011019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档