Excel - 根据相邻单元格值选择单元格

时间:2015-06-22 13:28:47

标签: excel

我有以下excel电子表格,我正在尝试找出如何编写公式以便在D列中提供值。

在每一行中都有一个测试日期,我正在尝试计算从每个测试日期到主要日期的日差,特定于每个主题。

我认为这将涉及根据C栏中的值选择主要测试日期,我不知道如何做到这一点。

任何帮助都将不胜感激。

  "container": ["DOMAIN_INSTALLABLE", "GOOGLE_DRIVE"]

3 个答案:

答案 0 :(得分:3)

这里的逻辑是:(1)找到作为主要日期的每个主题的日期,并为每一行返回; (2)从当前日期col B中减去该日期。 (2)很简单,但(1)需要一种方法来匹配BSubjectPrincipal Date的值。您可以使用具有多个INDEX-MATCH条件的MATCH函数执行此操作。

根据A2:C11中的数据和row 1中的列标题,在D2中输入此公式并填写:

{=B2-INDEX($A$2:$C$11,MATCH(1,($A$2:$A$11=$A2)*($C$2:$C$11="Yes"),0), 2)}

请注意,您需要使用 Ctrl Shift Enter 将其作为数组公式输入。

INDEX-MATCH函数背后的逻辑是:

  • A2:C11是您的整个原始数据表;该函数查看整个表。
    • 请注意,如果需要,可以包含标题,这对于通过匹配的列标题名称定义查阅列非常有用。如果这样做,您需要确保所有数组具有相同的维度(,如果您的数据表为A1:C11,则MATCH函数中的列需要从row 1开始。
  • MATCH函数通过乘以多个逻辑条件从查找数组中查找1的值。它将评估A2=A2A3=A2A4=A2等,并创建一列TRUE / FALSE值。然后,它将对C2="Yes"C3="Yes"等执行相同操作。只要满足两个条件,逻辑数组的乘积将为1。 (0告诉MATCH寻找完全匹配。)
  • 2告诉INDEX函数找到B函数指定的中第二列(MATCH)中的值 - ie ,满足两个条件。

然后从B2中的值中减去此值,以提供日期差异。

如评论中所述,此公式也可以简化为仅索引所需的查阅列:

=B2-INDEX($B$2:$B$11,MATCH(1,($A$2:$A$11=$A2)*($C$2:$C$11="Yes"),0))

答案 1 :(得分:1)

与@ Brendan的逻辑基本相同,但略短。这仍然是使用 Ctrl + Shift + 输入

输入的数组公式
=B2-SMALL(IF(IF($A$2:$A$11=A2,$C$2:$C$11)="Yes",$B$2:$B$11),1)

内部IF($A$2:$A$11=A2,$C$2:$C$11)为您提供一个数组,其中只包含与您所在主题相对应的主体。下一个IF(IF(...)="Yes",$B$2:$B$11)将为您提供一个仅包含主要日期的数组,并为所有其他值提供FALSE。 SMALL(...,1)只会获取您可以从当前测试日期中减去的主要日期:B2-SMALL(...)

答案 2 :(得分:0)

从TestDate中提取DAY(),并添加日差:

列主要日期的公式:= DAY(B2)+ D2

     A           B           C                 D
1    Subject     TestDate    Principal date    Day difference from Principal
2    Subject 1   2014-06-01  28                -3

现在您拥有正确的日期,您可以在新列中创建新日期,或合并这两个函数。