按组计数值
我有一张桌子,学生的ID分组。 我需要一个方便的方法来计算每个组中的学生总数,并在每组最后一行之后填充(标有??
)
目前我只需input=COUNT()
,然后手动找出每个组的范围的顶部和底部边界。 根本不方便。
我在想,一个可能的解决scheme可能是下列之一:
- 一种数据透视表排列。 我在这个失败了。
- Excel数据 – >大纲 – >小计function。 再次失败。 它不断在我的表中创build新的行。
- 一个普遍的公式 ,可以粘贴到每个
??
细胞。 不是最优雅的解决scheme,但仍然会这样做。 - 一个macros 。 作为最后的补救措施,如果没有别的作品。
以下步骤将计算小计,同时保留工作表的结构和格式。
-
将此公式放在单元格C1中,并将公式向下复制到列中:
=IF(NOT(ISERROR(SEARCH("Total",A1))),COUNTA(INDIRECT("B"&MATCH(LEFT(A1,LEN(A1)-7),A:A,0)+1&".B"&(MATCH(A1,A:A,0)+1))),IF(B1="","",B1))
-
使用公式rule =(MOD(ROW(C1),2)= 0)对单元格C1应用条件格式,并使用蓝色填充以匹配其他行上的阴影。 使用select性粘贴特殊格式在列中复制格式。
-
要么隐藏列B,要么使用select性粘贴特殊值将列C中的值复制到列B,并隐藏列C.如果决定将值复制到列B,则不需要设置条件格式。
这是公式的作用:
-
首先,使用SEARCHfunction,通过在行的A列中search单词“Total”来检查公式的行是否为Total行。
如果find“总计”一词:
确定工作表中该组合的学生ID的范围:
a)通过使用MATCHfunction识别find单词“GroupX”和“GroupX Total”的行。 有了这个,你就知道这个组的ID在一个范围内,例如,从第x行开始,到第y行结束。
b)使用起始和结束行号,构造ID所在的地址范围,该范围必须是string“B”+(行x)+“。”。 +“B”+(行y)。
c)将string转换为实际可以在INDIRECT函数中使用的范围参考。
使用COUNTA函数和范围来计算组中的学生人数,并将其显示为公式的结果。
如果没有find“Total”一词
检查B列中的单元格是否为空
a)如果是空的,则显示空白作为公式的结果
b)如果不是空的,则必须是学生证,因此请将ID显示为公式的结果。
添加一列(我通常将它添加到现有matrix的左边),从第2行开始input填充旧列A中的空白的公式。然后,包含您的新列的旧matrix可用于数据透视表。
-
因此,在matrix左侧插入一列,现在是A列。 在单元格A1中放置一个标题,例如“Group Name1”
-
在单元格B2中input以下公式,并将其扩展到最后:
=IF(B2="",A1,B2)
这样您的空白将被填充。 -
现在在这个matrix上应用一个数据透视表,在那里。
也许不是最好看的解决scheme,但它的快速和运作良好。
如果你有这样的桌子
学生编号学生组名称……..
那么你可以使用countif / countifs公式