Excel - 在表中查找值以返回第 n 列值

Posted

技术标签:

【中文标题】Excel - 在表中查找值以返回第 n 列值【英文标题】:Excel - Find a value within a table to return nth column value 【发布时间】:2020-06-11 19:04:40 【问题描述】:

我需要能够在 excel 中返​​回一个数组中的查找值,并返回与该查找值的行关联的最后一列。

在这个简化的示例中,我正在查找“B-C-D”,它可以在数组 A2:C5、第 2 列、第 3 行中找到,我需要它来返回与该值关联的 D 列中的值。

非常感谢

【问题讨论】:

【参考方案1】:

如果查找值是唯一的,您可以使用SUMPRODUCT:

=SUMPRODUCT((A8=A2:C5)*D2:D5)

如果不是,则使用AGGREGATE 获取第一个值:

=AGGREGATE(15,6,(D2:D5/(A9=A2:C5)),1)

【讨论】:

【参考方案2】:

您可以使用=MAX((A8=A2:C5)*ROW(A2:C5)) 查找与您的查找值匹配的元素的绝对行号。这样,您可以使用 D 列中的索引来找到答案:=INDEX(D:D,MAX((A8=A2:C5)*ROW(A2:C5)))

【讨论】:

【参考方案3】:

将以下代码粘贴到 VB 编辑器的 ThisWorkbook 模块中。这样,对查找单元格的任何更改都会触发宏在 d 列中查找值并将其放入 b7 中。

Option Explicit

Public Sub Workbook_SheetChange(ByVal ws As Object, ByVal target As Range)


If (ws.Name) = Worksheets(1).Name Then
    If Not Intersect(target, Range("a7")) Is Nothing Then
        Dim rng As Range
        Dim i As Variant
        Set rng = Range("a1:d5")

        For Each i In rng
            If target.Value = i Then
                Cells(7, "b").Value = Cells(i.Row, "d").Value
            End If
        Next i
    End If
End If
End Sub

【讨论】:

以上是关于Excel - 在表中查找值以返回第 n 列值的主要内容,如果未能解决你的问题,请参考以下文章

Excel用啥函数查找并返回数据在表中的位置,就像按Ctrl+F,Excel2003版本

Excel,根据从整个工作表中找到的文本返回行和列值

在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?

返回值以记录时出现表达式错误

在表中查找特定关系

excel表中怎么在一列名字中查找一个名字,并返回同一行相邻列里的数据