如何在excel中提取满足多个行和列条件的值?

如何在excel中提取满足多个行和列条件的值?,excel,vba,excel-formula,lookup,Excel,Vba,Excel Formula,Lookup,我有一个这样的工作表,A1:C14每天记录不同油箱的温度 我想制作一个excel公式或vba宏,能够提取每个油箱的最新温度,以便我可以在E1:G6中填写一个新表 如何编写能够: 找到正确的油箱 查找每个油箱测量的最新日期 给出所选油箱的温度值 我试着应用这个公式,但却更加困惑: =INDEX(,SMALL(IF(COUNTIF(,),MATCH(,),""),ROWS),COLUMNS) 谢谢大家! 如果列A中的日期按升序排序,则可以在单元格G2中使用以下公式并向下复制

我有一个这样的工作表,
A1:C14
每天记录不同油箱的温度

我想制作一个excel公式或vba宏,能够提取每个油箱的最新温度,以便我可以在
E1:G6
中填写一个新表

如何编写能够:

  • 找到正确的油箱
  • 查找每个油箱测量的最新日期
  • 给出所选油箱的温度值
  • 我试着应用这个公式,但却更加困惑:

    =INDEX(,SMALL(IF(COUNTIF(,),MATCH(,),""),ROWS),COLUMNS)
    

    谢谢大家!

    如果列
    A
    中的日期按升序排序,则可以在单元格
    G2
    中使用以下公式并向下复制

    =LOOKUP(2,1/(B:B=E2),C:C)
    

    查看类似的内容。

    如果日期未排序,您可以使用
    索引
    /
    聚合
    功能:

    =INDEX($C$2:$C$14,AGGREGATE(14,6,(AGGREGATE(14,6,($A$2:$A$14)*($B$2:$B$14=E2),1)=$A$2:$A$14)*(E2=$B$2:$B$14)*ROW($C$2:$C$14)-1,1))
    

    这是解决您的问题的一个相当快速的尝试

    首先,确保日期值的格式为日期(即2020年8月20日)

    然后在F列中,您可以使用:

    =最大值(如果($B$2:$B$15=$E2,$A$2:$A$15))

    要查找每个油箱的最新日期,请阅读

    然后在G列中使用:

    =索引($C$2:$C$14,匹配(1,如果($A$2:$A$14=$F2,如果($B$2:$B$14=$E2,1)),0))

    查找最近读取日期每个油箱的值

    我建议您使用范围,以便插入行并自动增加日期范围等


    将上述两个单独的公式组合成一个公式可能并不太难。但通过这种方式,您可以看到正在发生的情况,并且我认为每个油箱的最新读取日期可能很有用。

    您还可以使用用户定义的函数

    Function myTemp(s As Range)
        Application.Volatile
        Dim vDB
        Dim myS As Single
        Dim myDay As Date
        Dim i As Long, r As Long
        
        vDB = Range("a1", Range("c" & Rows.Count).End(xlUp))
    
        r = UBound(vDB, 1)
        For i = 2 To r
            If vDB(i, 2) = s Then
                If vDB(i, 1) >= myDay Then
                    myDay = vDB(i, 1)
                    myS = vDB(i, 3)
                End If
            End If
        Next i
        myTemp = myS
    End Function
    

    使用搜索模式查看ar=-1我的excel中没有XLOOKUP