繁体   English   中英

vlookup对应于两个非相邻字段的两个差异数据

[英]vlookup two difference data corresponding to two non-adjacent fields

我想在“否”中执行VLOOKUP,获取值“ 201”,其中“购买”表中的“否”和“框”匹配

屏幕截图 在此处输入图片说明

=IFERROR(INDEX($B2:$B100,MATCH(1,($A2:$A100=$H1)*($E2:$E100=I$1),0),3),"NONO")

可以有比VLOOKUP更好的另一个选择,也可以。 谢谢!

使用此数组公式。 此公式将过滤所有要放入I1单元中的数据。

=IFERROR(INDEX($A$1:$E$25,SMALL(IF($A$1:$A$25=$I$1,ROW($A$1:$A$25)),ROWS($A$1:$A1)),COLUMNS($A$1:A$1)),"")

由于它是一个数组公式,请按CTRL + SHIFT + ENTER以评估该公式。

截图示例: 样本截图

将公式放入G4单元格后(如我的屏幕快照),根据需要向右和向下拖动并填充。

数组公式²和由AGGREGATE¹函数产生的循环处理会产生计算滞后。 他们引用的范围应保持在最小行数。 在接收频繁添加和删除的数据上维持最少数量的相关行是很费时间的。

下面的公式看起来要复杂得多,但是它可以动态跟踪INDEX函数 数组中的确切行数。 为了简化公式,我允许多一行。 那是包含列标题标签的第1行。

在I10作为标准公式中,

=INDEX(B:B, AGGREGATE(15, 6, ROW($A$1:INDEX($A:$A, MATCH(1E+99,$A:$A )))/($A$1:INDEX($A:$A, MATCH(1E+99,$A:$A ))=$H10), ROW(1:1)))

向右和向下填充。

为您的字符串串联。 我从以前对类似问题的答案之一中摘录了该VBA用户定义功能³(又名UDF)。

Public Function conditional_concat_strs(rSTRs As Range, rCRITs As Range, rCRIT As Range, Optional sDELIM As String = ", ")
    Dim c As Long, sTMP As String

    Set rSTRs = Intersect(rSTRs, rSTRs.Parent.UsedRange)
    Set rCRITs = Intersect(rCRITs, rCRITs.Parent.UsedRange)

    Set rSTRs = rSTRs.Cells(1, 1).Resize(rCRITs.Rows.Count, rCRITs.Columns.Count)
    For c = 1 To rCRITs.Cells.Count
        If rCRITs(c).Value2 = rCRIT Then _
            sTMP = sTMP & rSTRs(c).Value & sDELIM
    Next c
    conditional_concat_strs = Left(sTMP, Application.Max(Len(sTMP) - Len(sDELIM), 0))
End Function

在I2中,

=conditional_concat_strs(E:E,A:A, I1)

完整的列引用在Worksheet.UsedRange属性的范围内被截断。 使用它们没有计算上的损失。

conditonal_concat


¹ 数组公式需要使用Ctrl + Shift + Enter↵完成 正确输入第一个单元格后,就可以像填充其他公式一样向下或向右填充或复制它们。 尝试将全列引用减少到更接近代表实际数据范围的范围。 数组公式对数地缩短了计算周期,因此,最好将参考范围缩小到最小。 有关更多信息,请参见准则和数组公式示例

²AGGREGATE函数是Excel 2010引入的。在早期版本中不可用。

³ 将用户定义的功能(也称为UDF)放置在标准模块代码表中。 点击Alt + F11 ,当VBE打开时,立即使用下拉菜单插入►模块Alt + IM )。 将功能代码粘贴到新的模块代码表中,该代码表的标题类似于Book1-Module1(代码) 点击Alt + Q返回到您的工作表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM