【问题标题】:Array to lookup multiple columns and take another columns information用于查找多列并获取另一列信息的数组
【发布时间】:2020-03-31 15:36:42
【问题描述】:

我正在尝试在单独的表数组中查找零件编号,相同的值可能位于多行中。该公式应该在另一个表中找到该值的每个实例,移动到日期列并确定该值存在于哪个月份以及它属于哪一行。整个表 B3:F15 应该是自动化的。如果可能的话,我附上了一张图片,并正确解释了我要完成的工作。

公式将被输入到 B3:F15。这些是数据将被拉入的单元格。每行将在 A 列中搜索其对应的零件编号。即,B3 到 F3 仅查找 A3 数据。这些行用于确定 L2:P4 中的部件号是否与其在 A 列中的行值匹配,以及是否在属于 B2:F2 月份的月份中使用。如果在相应月份使用了零件号,那么它将从 I 列输出工厂编号。在某些情况下,L2:P4 中的零件号可以存在于多行中,但它们对于每一列都是唯一的。

例如,我手动填写了 PN1001 和 PN1021 的数据。对于 PN1001,这属于 B3:F3。 B3:F3 中的每个单元格将搜索数组 L2:P4 并发现它只在 M4 中找到一次,因此它将查看其行 J4 和 K4 中的日期,并确定它在哪个月份使用。因为它在一月、二月、三月使用,它将植物#输出到D3、E3、F3。在 PN1021 的例子中是一样的,但是在这种情况下 PN1021 存在于 L2 和 L4 中,所以它将取 J2,K2 和 J4,K4 的日期。

有些零件编号可以是字母和数字的组合,有些可能只是数字。

就如何构建公式而言,我不确定应该使用哪种索引/匹配/查找组合。我的理论是 B3:F15 中的每个单元格都包含一个公式 =MATCH(Lookup(columnA with L3:P4)) (但是你如何让它查找多个实例??)一些研究让我使用这个概念查找多个实例并指向第 # 行。

SMALL(IF(Lookup Range = Lookup Value, Row(Lookup Range),Row ()-# of rows below start row of Lookup Range)

一旦我可以找到每个实例,然后索引该行并比较 B3 中的单元格是否大于 J3 并且小于 K3 以确定应该输入值的月份。如果是,则从行号输出第 I 列。

如果您有任何更好的解决方案或想法来执行此操作,请提供反馈。提前感谢您的支持。

【问题讨论】:

    标签: excel indexing excel-formula match lookup-tables


    【解决方案1】:

    我认为下面的公式可以满足您的需求。我根据您的 I1:P4 数据创建了一个表格,并使用了结构化引用,因为我发现它更容易理解。

    B3: =IFERROR(
       INDEX(partsTbl,
               MAX(
                        ($A3=partsTbl)*
                          (B$2>DATE(YEAR(partsTbl[[Test Start Date]:[Test Start Date]]),MONTH(partsTbl[[Test Start Date]:[Test Start Date]]),0))*
                          (B$2<DATE(YEAR(partsTbl[[Test Finish Date]:[Test Finish Date]]),MONTH(partsTbl[[Test Finish Date]:[Test Finish Date]])+1,1))*
                          ROW(partsTbl)-ROW(partsTbl[#Headers])),
                          1),
      "")
    
    • $A3=partsTbl 返回一个二维数组,如 {FALSE,FALSE,TRUE,FALSE;FALSE,FALSE, …} 以在表中查找零件编号
    • 由于partsTbl 中的开始/结束日期并不总是在月初/月底,我们需要在比较B2:F2 中的日期之前将它们转换为此类
      • (B$2&gt;DATE(YEAR(partsTbl[[Test Start Date]:[Test Start Date]]),MONTH(partsTbl[[Test Start Date]:[Test Start Date]]),0))
    • 月底也差不多。
    • 我们现在有一个由{FALSE,FALSE,TRUE,FALSE...} 组成的二维数组,其中TRUE 与按日期过滤的部件号匹配。
    • ROW(partsTbl) 返回表中行号的匹配数组(我们减去 Header 行的行号以确定数据中的行)。
    • 当我们进行乘法运算时,我们会得到一个数组,其中最大值将是所需的行
    • INDEX,引用第 1 列,然后将返回适当的植物#

    【讨论】:

    • 谢谢,这正是我想要的。你让这看起来比我必须做的斗争容易得多。仅供参考,在单元格 B3 的示例代码中,您在日期公式中包含 D$2。为避免将来查看此帖子的其他人感到困惑,它应该是 2 美元。
    • @Sherv 已更正。我一定是复制了 D3 的公式,而不是 B3 中的公式 :-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 2021-02-10
    • 2015-11-25
    相关资源
    最近更新 更多