如何根据其相应的值从一列到另一列获取每个值
正如你可以在图像中看到“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中,然后移除空格应该是快速的:
- System.Data.OleDb.OleDbException:无效的Internet地址。 如何使用OleDb连接到位于Web服务器上的excel文件
- 条件格式化VBA不会突出显示工作表中特定单元格中的单元格
- UnicodeDecodeError:'utf-8'编解码器无法解码位置14中的字节0xb9:无效的起始字节
- 如何find指定的数字位于数字列表之间?
- 获取单元格地址的函数已被input到
- 当复制工作表到新的工作簿MS Excel的“下标超出范围”
- VBA:如何引用使用表标题的列,以便我可以在单元格引用中使用该列
- 如果条件公式与引用失败,则为openpyxl
- Office365 Excel访问RegExp库的Tools – > References菜单