两个条件的索引匹配吗?

两个条件的索引匹配吗?

数据:

在此处输入图片描述

我需要一些帮助来提出基于 2 个条件项的索引匹配公式。对于附加的数据集,我需要设置一个公式(并使其可重复用于其他商店和未来日期),该公式根据特定日期(在本例中为 11/9/15)获取数据编号,并针对商店 # 414。在此示例中,我希望返回的答案为“132”。希望这有意义。

任何帮助,将不胜感激!

答案1

以下是两种解决方案,与我在问题评论中提出的建议相对应。对于这两种解决方案,我都假设 A1:C30 包含问题中的数据。

使用数据库函数

第一个解决方案使用 Excel 的数据库函数。数据库函数都将单元格区域视为数据库,其中每行是一条记录,每列是字段。第一行包含列名。数据库函数还将另一组单元格作为搜索条件,其中第一行是列名,第二行是实际条件。鉴于此,在 E1:F2(或任何地方,但这些示例中我将其放在此处)中输入:

       E         F
 1   Store #     Date
 2       414  11/9/15

这就是标准。然后在 E4(或任何地方)输入=DGET(A1:C30,"Data",E1:F2)。这将使用DGET数据库函数查找给定数据库(A1:C30)、列名("Data")和标准(E1:F2)的列值。在本例中,这将导致132。将 F2 的内容更改为11/2/15将更改DGET值到55,等等。

这也许是最简洁的方法,因为如果数据中有额外的列,并且有要用于匹配这些列的条件,则很容易扩展。您还可以重用条件的部分内容来执行其他操作。例如,=DSUM(A1:C30,"Data",E1:E2)将对商店 414 的所有数据值求和,=DSUM(A1:C30,"Data",F1:F2)将对 11/9/15 的所有数据值求和,等等。它也不假设列的排序顺序。缺点是,如果您不经常使用数据库函数(像我一样 :-) ),则每次使用它们时都必须重新阅读它们的帮助(就像我为此做的那样 :-) ),因此它可能不那么易于维护。

使用索引和查找公式

第二种方法结合了Excel的一些查找公式。

设置与上述相同的工作表,问题的数据在 A1:C30 中,条件在 E1:F2 中。请注意,在本例中,我们只使用 E2 和 F2,但您可以将 E1 和 F1 保留为 E2:F2 中内容的标签。

然后在 E4 中输入:

 =VLOOKUP(F2,INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1),2)

从内到外分解如下:

MATCH(E2,A:A,0)

0这将在第一列 ( A:A) 中找到与 store # in 匹配的第一个匹配项 ( ) E2。它返回相对位置,在本例中,由于第一列的全部内容都是查找数组,因此位置将是 store # in E2 中第一次出现的行号。使用示例数据,如果您将其单独放在单元格中,则其值为7

INDEX(B:B,MATCH(E2,A:A,0),1)

这将生成对由和 列B:B确定的行中第二列 ( ) 单元格的引用。如果您将其单独放在单元格中,则值将是引用单元格的值,在本例中,将是 B7 中的值,或。MATCH111/10/14

MATCH(E2,A:A,1)

这将在第一列中找到与商店编号匹配的最后一个匹配项(1)。如果将其单独放在单元格中,则值将为25

INDEX(C:C,MATCH(E2,A:A,1),1)

这将生成对由和 列C:C确定的行中第三列 ( ) 单元格的引用。如果您将其单独放在单元格中,则值将是引用单元格的值,在本例中,将是 C25 中的值,或。MATCH1132

INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1)

这将结合两个INDEX公式来生成一个用于搜索日期的引用。对于示例数据,它将是 B7:C25(如果您将它单独放在单元格中,您将得到 ,#VALUE!因为它会产生多个值。如果您将它作为数组公式单独放在单元格中,您将得到左上角单元格的值,或11/10/14)。

=VLOOKUP(F2,INDEX(B:B,MATCH(E2,A:A,0),1):INDEX(C:C,MATCH(E2,A:A,1),1),2)

这将所有内容结合在一起。它用于在由两个公式 (B7:C25) 生成的单元格区域内VLOOKUP查找日期,并返回匹配行的第二列(最后一列)。F2INDEX2

瞧!

相关内容