如何根据相应的值从一列到另一列获取每个值

时间:2015-12-06 04:37:12

标签: excel function

Excel Problem

正如您在图像中看到的那样," Col B"多次使用相同的数字。例如:" 1"是四次," 2"是三次,依此类推。但是,所有这些数字都对应于" Col A"中的特定数字。我想要做的是获得我用橙色和黄色突出显示的列。你可以清楚地看到我做了什么。我需要的是一个excel函数,它为我做。这只是一个样本。我有数百万个数据点的数据集,我无法输入所有数据。

谢谢!

3 个答案:

答案 0 :(得分:0)

单元格E2的公式

=IFERROR(SMALL(IF($B:$B=$D2,ROW($B:$B)-1),COLUMN(A:A)),"")

作为数组公式输入(使用Ctrl-Shift-Enter键输入而不是输入)

根据需要复制多个单元格

注意:这个公式很慢。精心设计的UDF会更快。

使用UDF解决此问题的一种方法是

Function MultiLookup(Val As Variant, rItems As Range, rLookup As Range, Index As Long) As Variant
    Dim vItems As Variant
    Dim i As Long, n As Long

    With rItems
        If IsEmpty(.Cells(.Count)) Then
            Set rItems = Range(.Cells(1, 1), .Cells(.Count).End(xlUp))
        End If
    End With

    vItems = rItems
    n = 0
    For i = 1 To UBound(vItems, 1)
        If vItems(i, 1) = Val Then
            n = n + 1
            If n = Index Then
                MultiLookup = rLookup.Cells(i, 1)
                Exit Function
            End If
        End If
    Next
    MultiLookup = vbNullString
End Function

对于单元格E2

,请使用这样的方法
=MultiLookup($D2,$B:$B,$A:$A,COLUMN(A:A))

再次,复制与使用愿望一样多的单元格

答案 1 :(得分:0)

这是另一种非UDF解决方案,可以快速运行。请注意,它使用AGGREGATE - 功能,该功能仅在Excel-2010之后可用。

将其放入E2并拖过。

=INDEX($A$2:$A$1000,AGGREGATE(15,6,Row($1:$1000)/($B$2:$B$1000=$D2),COLUMN(A:A)))

您还可以使用IFERROR打包此公式,以确保不会出现#VALUE!错误。

答案 2 :(得分:0)

数据透视表,将其正文复制到D2中,然后删除空白应该很快:

SO34114099 example

相关问题