我有以下excel电子表格,我正在尝试找出如何编写公式以便在D列中提供值。
在每一行中都有一个测试日期,我正在尝试计算从每个测试日期到主要日期的日差,特定于每个主题。
我认为这将涉及根据C栏中的值选择主要测试日期,我不知道如何做到这一点。
任何帮助都将不胜感激。
"container": ["DOMAIN_INSTALLABLE", "GOOGLE_DRIVE"]
答案 0 :(得分:3)
这里的逻辑是:(1)找到作为主要日期的每个主题的日期,并为每一行返回; (2)从当前日期col B
中减去该日期。 (2)很简单,但(1)需要一种方法来匹配B
和Subject
上Principal 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=A2
,A3=A2
,A4=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
现在您拥有正确的日期,您可以在新列中创建新日期,或合并这两个函数。