计数单元格但不计算具有特定部分string的单元格

我首先想说的是,我看到了类似的问题。 但是,如果它包含部分string,则会计算该单元格。 我不够好翻转公式的这个版本。

我用它来做什么? 我会有一个看起来类似于这样的Excel页面:

Classroom 1 32523 24634 67457 43636 35467 Classroom 2 34563 64746 79877 23456 Classroom 3 23777 36434 23526 68997 36346 34634 74567 58867 

这里的目标是两件事。 其一,我想统计本专栏中所有不包含“课堂”一词的项目,如果能够单独计算每个教室,我想要完成的第二件事情(如果可能的话,这可能太多了)。 我的意思是,这些专栏的大小不一,每个月都会寄给我一份新的文件。 我真的想要一个可以返回的公式:Classroom 1 = 5,Classroom 2 = 4等。我有80多个教室,每class不能继续使用一个公式,因为重新调整范围非常耗时。 (因为范围大小不一,我还没有find更好的方法)。

谁能帮忙? 我不知所措。

对于总数:

 =COUNT(A:A) 

对于每个教室,列出它们出现在列A中的列表,然后在第一个教室旁边的第一个单元格中使用该列表并复制下来。 没有帮手列需要。

 =COUNT(INDEX(A:A,MATCH(C3,A:A,0)+1):INDEX(A:A,IFERROR(MATCH(C4,A:A,0)-1,MATCH(1E+99,A:A)))) 

在这里输入图像说明

将这个作为一个答案,因为你有一个2部分的问题,很难把所有这一切都纳入评论

第一部分:一,我想统计本专栏中不包含“课堂”一词的所有项目,

这部分很简单。 这会计算你所有的非教室的:

 =SUMPRODUCT(--(LEFT(A1:A22, LEN("Classroom")) <> "Classroom")) 

但是,它会计算空白(所以你的示例数据将是19)。 如果你不想数空白:

 =SUMPRODUCT(--(LEFT(A1:A22, LEN("Classroom")) <> "Classroom") * (A1:A22 <> "")) 

这将返回17。

基本上,这两个公式的工作方式是通过把你给他们的数组,然后比较每个值,看看是否等于教室或空白。 它将这些计为0,其他则计为1,然后总结得出的0和1的数组。

接下来, 第2部分:我真的想要一个公式可以返回:课堂1 = 5,课堂2 = 4

最简单的方法是添加一个帮助列。 假设您的数据在A2中开始,请使用以下命令:

 =IF(OR(LEFT(A2,9)="Classroom", A2 = ""), "",LOOKUP(2,1/(LEFT(A$1:A2, 9)="Classroom"),A$1:A2)) 

这个公式只是通过检查其上或者之上的所有内容,然后为是否是教室创build一个TRUE / FALSE(1/0)的数组。 然后,当你到达最后,你试着find一个1和0的数组中的2。 显然你不能,所以它默认的最后一个值比自己小。 这是最后一个教室(最后一个教室)。 索引然后给出那个教室logging的位置并且打印它。

然后,你可以在你的帮手列上使用countif,所以我们可以把它计算在教室里。 假设你在f1中有教室1,在f2中有教室2,等等 –

 =COUNTIF($B$2:$B$22, F1) 

下面的截图,虽然由于某种原因,我不能得到它embedded作为一个链接

这是一个截图

首先添加一个帮手列,以显示哪一个行与之相关。 假设数据在列AA2开始,把这个公式放在B2并拷贝所有的数据行。 你可以隐藏这个列,或者把它放在右边

 =IF(LEFT(A2,9)="Classroom",A2,B1) 

计算所有数据点的公式

 =COUNTIFS(A:A,"<>",A:A,"<>Classroom*") 

把一个教室列表放在一列,说C栏。 在单元格D2放入这个公式并复制下来

 =COUNTIFS(B:B,C2,A:A,"<>",A:A,"<>Classroom*") 

在这里输入图像说明