数组查找多列并获取另一列信息

Array to lookup multiple columns and take another columns information

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

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

例如,我手动填写了 PN1001 和 PN1021 的数据。对于 PN1001,这属于 B3:F3。 B3:F3 中的每个单元格将搜索数组 L2:P4 并意识到它只在 M4 中找到一次,因此它将查看其行 J4 和 K4 中的日期,并确定它被使用的月份in. 由于在Jan、Feb、Mar使用过,所以会把Plant#输出到D3、E3、F3中。在 PN1021 的示例中,它是相同的,但在这种情况下,PN1021 存在于 L2 和 L4 中,因此它将采用 J2,K2 和 J4,K4 的日期。

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

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

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

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

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

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

B3: =IFERROR(
   INDEX(partsTbl,
           MAX(
                    ($A3=partsTbl)*
                      (B>DATE(YEAR(partsTbl[[Test Start Date]:[Test Start Date]]),MONTH(partsTbl[[Test Start Date]:[Test Start Date]]),0))*
                      (B<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 return 类似于 {FALSE,FALSE,TRUE,FALSE;FALSE,FALSE, …} 的二维数组,用于在 table
  • 中查找部件号
  • 由于您在 partsTbl 中的 start/finish 日期并不总是在该月的 beginning/end,我们需要在比较 [=15] 中的日期之前将它们转换为这样的日期=]
    • (B>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) returns 是 table 中行号的匹配数组(我们减去 Header 行的行号来确定数据中的行).
  • 当我们进行乘法运算时,我们会得到一个数组,其中最大值将是所需的行
  • INDEX,引用第 1 列,然后 return 适当的植物 #