Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 从多个列中计算最低值_Excel_Excel Formula - Fatal编程技术网

Excel 从多个列中计算最低值

Excel 从多个列中计算最低值,excel,excel-formula,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

我有一个表,我需要计算一年的到期时间,但我有两列,我需要计算其中的最低值。什么样的功能会对此有所帮助。这里有一个小例子

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
您可以使用一个额外的“helper”列,该列在过期日期和中断日期之间取最小值。(考虑中断日期为空的可能性)

那么,您计算每年总数的公式就是在新列上添加一个简单的
COUNTIF


辅助列公式的略短版本:

=YEAR(IF(COUNT(B2:C2)=2,MIN(B2:C2),B2+C2))
不同的是,如果
截止日期
列中的
中断日期
列中填充的单元格旁边的
到期日期
列中有一个空白,则返回一年(而不是
1900


对于实际计数,我会选择一种被认为与SO无关的技术。

无辅助列的解决方案

公式:

=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)))
IF(OR(AND(OR(B<C,C=""),B<>"",YEAR(B)=X),AND(OR(C<B,B=""),C<>"",YEAR(C)=X))) THEN TRUE
=SUMPRODUCT(-)($B:$B=SUM(如果)年(如果($B$2:$B$5
注意:这是一个数组公式,您必须将其粘贴到单元格中,然后点击
ctrl+shift+enter
,然后您可以将其复制并粘贴到表格中

如果您的数据在A1:C5中,并且您有要在E1:H10中测试的年份,则单元格可以工作。然后,您可以将上述公式粘贴到E2中,然后将ACC粘贴到表格中

数组公式执行以下操作:

  • 第一个
    IF
    语句检查哪个值较低,ColB还是ColC
  • 嵌入的
    IF
    语句然后检查以确保值不是0。如果值是0,则返回另一列,如果值不是0,则返回其自身的非0值
  • YEAR
    函数从每个日期提取年份
  • 执行的最后一个
    IF
    函数(但函数中写入的第一个)针对总和上方的单元格测试年份。如果年份匹配,则返回1,如果为false,则返回0
  • SUM
    语句只对所有真值求和
  • =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)))