我有一张桌子,我需要计算一年的到期时间,但是我有两列,我需要计算它们中的最低值。什么功能将对此有所帮助。这是一个小例子
Name Expiration date Break date
Nr.1 31-Aug-2019 28-Feb-2023
Nr 2 18-Oct-2018
Nr 3 30-Sep-2018 21-Jun-2017
Nr. 4 1-Jan-2018
如您所见,将会出现在这里:
2017 2018 2019 2020
1 2 1 0
答案 0 :(得分:0)
答案 1 :(得分:0)
helper列的公式略短一些:
=YEAR(IF(COUNT(B2:C2)=2,MIN(B2:C2),B2+C2))
,不同之处在于,如果1900
列中空白区域位于Expiration date
列旁边,则返回一年(Break date
除外)。
对于实际计数,我会选择一种被认为是SO之外的技术。
答案 2 :(得分:0)
没有助手列的解决方案
公式:
=SUMPRODUCT(--((($B:$B<$C:$C)+($C:$C=""))*($B:$B<>"")*(YEAR($B:$B)=E$1))+((($C:$C<$B:$B)+($B:$B=""))*($C:$C<>"")*(YEAR($C:$C)=E$1)))
假设:
可以将公式从E2水平拖动到H2。
公式逻辑(伪代码):
IF(OR(AND(OR(B<C,C=""),B<>"",YEAR(B)=X),AND(OR(C<B,B=""),C<>"",YEAR(C)=X))) THEN TRUE
使用表格的替代解决方案
由于标题破坏了原始公式,因此您需要使列引用更特定于数据的实际位置。表格是最简单的方法。
=SUMPRODUCT(--(((Table1[Expiration Date]<Table1[Break Date])+(Table1[Break Date]=""))*(Table1[Expiration Date]<>"")*(YEAR(Table1[Expiration Date])=$E1))+(((Table1[Break Date]<Table1[Expiration Date])+(Table1[Expiration Date]=""))*(Table1[Break Date]<>"")*(YEAR(Table1[Break Date])=$E1)))
表格在水平拖动公式时效果不佳,因此我将年份放在一栏中:
答案 3 :(得分:0)
= SUM(IF(YEAR(IF($ B $ 2:$ B $ 5
注意:这是一个数组公式,必须将其粘贴到单元格中,然后单击ctrl+shift+enter
,然后可以将其复制并粘贴到整个表中。
如果您的数据位于A1:C5中并且您有要跨E1:H10测试的年份,则该单元格将起作用。然后,您可以将上述公式粘贴到E2中,然后粘贴到整个表中。
数组公式执行以下操作:
IF
语句检查以查看哪个值是ColB或ColC。IF
语句检查以确保值不为0。如果它们为0,则返回另一列;如果不为0,则返回其自己的非0值。 YEAR
函数从每个日期中提取年份。 IF
函数(但函数中第一个写入)针对总和上方的单元格测试年份。如果年份匹配,则返回1,如果为false,则返回0 SUM
语句只是对所有真实值求和