【问题标题】:Dynamically sum row values based on column headers? - Excel根据列标题动态汇总行值? - Excel
【发布时间】:2015-07-08 13:15:57
【问题描述】:

需要以下链接中发布的查询的解决方案,

http://www.mrexcel.com/forum/excel-questions/334740-dynamically-sum-row-values-based-column-headers.html

应该将 PersonWeek 作为单独的列显示周数。

任务:根据列标题动态汇总行值?

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    在本网站上重新发布整个问题是一种很好的形式;尽管如此:

    您正在寻找的内容相对简单。有很多方法可以做到这一点,但我建议您结合使用“匹配”功能和“偏移”功能。 Offset 函数根据给定的起点创建一个范围,如图所示向上/向下/向左/向右移动,具有给定的高度/宽度。例如:

    =偏移量(B2,1,2,3,4)

    表示范围 D3:G5。这是从单元格 B2 开始,向下移动 1 行,向右移动 2 列,总共 3 行和 4 列给出的范围。

    所以剩下的一点是确定从哪里开始和停止偏移。

    首先,偏移函数中的第一个字段将是单元格 A1,因为它是数据表的左上角。要找到向下移动的行数,您需要找到您所指的项目(我假设单元格 A6 是您输入您关心的项目名称的地方,A7 是您输入您关心的第一周的地方, A8 是您输入您关心的最后一周的位置)。要查找从 A1 向下移动的行数,请使用 Match:

    =匹配(A6, A2:A5,0)

    要找到向右移动多少列以找到您的第一周,请再次使用 Match:

    =匹配(A7, B1:G1,0)

    假设您只想查看单个项目,我们知道我们希望范围有多高 (1)。

    要确定我们希望范围有多宽,我们需要知道您的结束周,而不是您的开始周:

    =(匹配(A8,B1:G1,0)-匹配(A7, B1:G1,0))

    所以整个事情将是

    =偏移(A1,Match(A6, A2:A5,0),Match(A7, B1:G1,0),1,Match(A8,B1:G1,0)-Match(A7, B1:G1 ,0))

    现在唯一剩下的就是将新定义的范围包装在“sum”函数中,如下所示:

    =Sum(偏移量(A1,Match(A6, A2:A5,0),Match(A7, B1:G1,0),1,Match(A8,B1:G1,0)-Match(A7, B1) :G1,0)))

    如果有人以您的表格中未找到的方式输入项目名称/周名称,此公式将产生错误 - 因此,在单元格 A6-A8 中,您可能希望使用数据验证仅允许输入这些名称- 如果您想详细说明,请告诉我。

    【讨论】:

      猜你喜欢
      • 2023-02-23
      • 2016-11-12
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多