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

Excel问题

正如你可以在图像中看到“Col B”有多个相同的数字。 例如:“1”是四次,“2”是三次,依此类推。 但是,所有这些数字都对应于“Col A”中的特定数字。 我想要做的是获得我已经突出显示在橙色和黄色的列。 你可以清楚地看到我做了什么。 我需要的是一个为我做的excel函数。 这只是一个例子。 我有百万个数据点的数据集,我不能input所有的数据。

谢谢!!

单元格E2公式

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

以数组公式input(使用Ctrl-Shift-Enterinput而不是Enter)

根据需要复制尽可能多的单元格

注意:这个公式很慢。 精心devise的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)) 

再次,复制像使用希望一样多的单元格

这是另一个非UDF解决scheme,工作很快。 请注意,它使用AGGREGATE -Function,它只在Excel-2010以后可用。

把它放在E2中,然后拖过去。

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

你也可以用IFERROR来包装这个公式,以确保你没有得到#VALUE! 错误。

一个数据透视表,将其正文复制到D2中,然后移除空格应该是快速的:

SO34114099的例子