需要在以下链接中发布的查询解决方案
应将PersonWeek作为单独的列,并显示周数。
任务:根据列标题对行值进行动态求和?
答案 0 :(得分:1)
在本网站上完整地重新发布问题是一种很好的形式;尽管如此:
您正在寻找的是相对简单的。有很多方法可以实现这一点,但我建议您使用“匹配”功能和“偏移”功能的组合。偏移功能基于给定的起点创建一个范围,如所示,以给定的高度/宽度向上/向下/向左/向右移动。例如:
=偏移(B2,1,2,3,4)
表示范围D3:G5。这是从单元格B2开始,向下移动1行,向右移动2列,总共3行4列的范围。
所以剩下的要点是确定从哪里开始和停止你的偏移。
首先,Offset函数中的第一个字段将是单元格A1,因为它是数据表的左上角。要查找要向下移动的行数,您需要找到您所指的项目(我将假设单元格A6是您输入您关注的项目名称的位置,A7是您输入您关注的第一周的位置,和A8是你进入你关心的最后一周的地方)。要查找从A1向下移动的行数,请使用匹配:
=匹配(A6,A2:A5,0)
要查找向右移动的列数以查找第一周,请再次使用匹配:
=匹配(A7,B1:G1,0)
假设您只想查看单个项目,我们知道我们希望范围有多高(1)。
要了解我们想要的范围有多广,我们需要知道您的结束周,而不是您的开始周:
=(匹配(A8,B1:G1,0)-Match(A7,B1:G1,0))
所以整个事情将是:
=偏移(A1,匹配(A6,A2:A5,0),匹配(A7,B1:G1,0),1,匹配(A8,B1:G1,0) - 匹配(A7,B1:G1) ,0))
现在唯一剩下的就是将新定义的范围包装在'sum'函数中,如下所示:
=总和(偏移量(A1,匹配(A6,A2:A5,0),匹配(A7,B1:G1,0),1,匹配(A8,B1:G1,0) - 匹配(A7,B1) :G1,0)))
如果有人以表格中找不到的方式输入项目名称/周名,则此公式将产生错误 - 因此在单元格A6-A8中,您可能希望使用数据验证仅允许输入这些名称 - 如果您想详细说明,请与我联系。