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

How do I extract a value in excel that meets multiple row and column criteria?

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

我想制作一个 excel 公式或 vba 宏,能够提取每个水箱的最新温度,以便我可以在 [= 中填写新的 table 13=]?

如何编写能够:

  1. 找到正确的坦克
  2. 找到每个罐被测量的最晚日期
  3. 给出所选水箱的温度值

我尝试应用这个公式,但变得更加困惑:

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

谢谢大家!

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

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

查看 this article 是否有类似内容。

如果日期未排序,您可以使用 INDEX / AGGREGATE 函数:

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

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

首先,确保您的日期值实际上被格式化为日期(即 08/20/2020)

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

=MAX(IF($B:$B=$E2,$A:$A))

查找每个坦克读取的最新日期。

然后在 G 列中使用:

=INDEX($C:$C,MATCH(1,IF($A:$A=$F2,IF($B:$B=$E2,1)),0))

查找每个罐在最新读取日期的值。

我建议您使用范围,这样您就可以插入行并自动增加日期范围等。

将上面两个单独的公式组合成一个公式可能并不难。但是这样你就可以看到发生了什么,我认为每个坦克的最新阅读日期可能有用吗?

您还可以使用 user-defined 函数。

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