计算多列中的最小值

时间:2018-09-06 15:30:17

标签: excel excel-formula

我有一张桌子,我需要计算一年的到期时间,但是我有两列,我需要计算它们中的最低值。什么功能将对此有所帮助。这是一个小例子

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

4 个答案:

答案 0 :(得分:0)

您可以使用额外的“帮助程序”列,该列在到期日期和休息日期之间取最小值。 (考虑到休息日期为空的可能性)

enter image description here

然后,您可以用方程式查找每年的总计,只需在新列上输入一个简单的COUNTIF

enter image description here

答案 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)))

假设:

  • A:C列中的数据,B中的到期日期,C中的终止日期
  • E1:H1年(2017,2018,2019,2010)

enter image description here

可以将公式从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)))

表格在水平拖动公式时效果不佳,因此我将年份放在一栏中:

enter image description here

答案 3 :(得分:0)

= SUM(IF(YEAR(IF($ B $ 2:$ B $ 5

注意:这是一个数组公式,必须将其粘贴到单元格中,然后单击ctrl+shift+enter,然后可以将其复制并粘贴到整个表中。

如果您的数据位于A1:C5中并且您有要跨E1:H10测试的年份,则该单元格将起作用。然后,您可以将上述公式粘贴到E2中,然后粘贴到整个表中。

Example of how the data should be set up for the formula to function

数组公式执行以下操作:

  1. 第一个IF语句检查以查看哪个值是ColB或ColC。
  2. 然后,嵌入的IF语句检查以确保值不为0。如果它们为0,则返回另一列;如果不为0,则返回其自己的非0值。
  3. YEAR函数从每个日期中提取年份。
  4. 执行的最后一个IF函数(但函数中第一个写入)针对总和上方的单元格测试年份。如果年份匹配,则返回1,如果为false,则返回0
  5. SUM语句只是对所有真实值求和