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