Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2010 - Fatal编程技术网

Excel 如何求和动态范围?

Excel 如何求和动态范围?,excel,excel-2010,Excel,Excel 2010,我想对动态范围求和,如果值为0,则不求和 例如 总和2时间范围A1-G1结果为8 总和3时间范围A1-G1结果为12 总和4时间范围A1-G1结果为21 如何在excel中编码。要计算范围内第一个2非零值之和A1:G1,可以使用以下数组公式(使用Ctrl+Shift+Enter确认): 对于3,更改SMALL函数的参数: =SUM(A1:INDEX(A1:G1,1,SMALL(IF(A1:G1,COLUMN(A1:G1)-MIN(COLUMN(A1:G1))+1),2))) 使用ifferro

我想对动态范围求和,如果值为0,则不求和

例如

  • 总和2时间范围A1-G1结果为8

  • 总和3时间范围A1-G1结果为12

  • 总和4时间范围A1-G1结果为21


  • 如何在excel中编码。

    要计算范围内第一个
    2
    非零值之和
    A1:G1
    ,可以使用以下数组公式(使用
    Ctrl
    +
    Shift
    +
    Enter
    确认):

    对于
    3
    ,更改
    SMALL
    函数的参数:

    =SUM(A1:INDEX(A1:G1,1,SMALL(IF(A1:G1,COLUMN(A1:G1)-MIN(COLUMN(A1:G1))+1),2)))
    
    使用
    ifferro
    ,检查是否有足够的非零元素:

    =SUM(A1:INDEX(A1:G1,1,SMALL(IF(A1:G1,COLUMN(A1:G1)-MIN(COLUMN(A1:G1))+1),3)))
    

    对于我的回答,单元格
    A5
    将保存要求和的“动态”单元格数。“动态”范围扩大到
    A5
    的大小,其中零值不包括在大小中

    您可以在任意空白单元格中输入我的公式

    这是一个数组公式,必须通过Control Shift Enter确认:

    =IFERROR(SUM(A1:INDEX(A1:G1,1,SMALL(IF(A1:G1,COLUMN(A1:G1)-MIN(COLUMN(A1:G1))+1),7))),"??")
    
    在单元格
    A5
    中输入从1到5的值时,以下是公式返回的结果:

    1=3

    2=8

    3=12

    4=21

    5=27

    小心不要在
    A5
    中输入大于5的数字,除非增加源范围中非零值的数量


    源范围大小可以通过将公式中的四个引用更改为
    A1:G1
    来增加。

    如果将零添加到总数中与否有什么区别?请告诉我我的答案是否完全符合您的要求。我可以进一步帮助您吗?
    =IFERROR(SUM(A1:INDEX(A1:G1,1,SMALL(IF(A1:G1,COLUMN(A1:G1)-MIN(COLUMN(A1:G1))+1),7))),"??")
    
    =SUM(INDEX(A1:G1,1,N(IF(1,SMALL(IF(A1:G1,COLUMN(A1:G1)),ROW(OFFSET(A1,,,A5)))))))