计数细胞但不计数具有特定部分字符串的细胞
Count cells but do NOT count cells with a specific partial 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" 的所有项目,第二件事我想完成(如果可能的话,这可能太多了)如果我可以计算每个 class房间分开。我的意思是,这些专栏的大小各不相同,并且每个月都会向我发送一份新文件。我真的想要一个 return 的公式:教室 1 = 5,教室 2 = 4,等等。我有 80 多个 class 房间,不能继续使用每个 class 的一个公式作为重新调整范围非常耗时。 (因为范围大小不同,我还没有找到更好的方法)。
有人能帮忙吗?我不知所措。
因为您有一个由两部分组成的问题,所以很难将所有这些都放入评论中
第 1 部分: 一,我想计算此列中不包含单词 "Classroom"
的所有项目
这部分非常简单。这将计算你所有的 non-classroom 个:
=SUMPRODUCT(--(LEFT(A1:A22, LEN("Classroom")) <> "Classroom"))
但是,它会计算空白(因此您的示例数据将为 19)。如果您不想计算空格:
=SUMPRODUCT(--(LEFT(A1:A22, LEN("Classroom")) <> "Classroom") * (A1:A22 <> ""))
这将 return 17.
基本上,这 2 个公式的工作原理是获取您提供的数组,然后比较每个值以查看它是等于 classroom 还是空白。它将那些计为 0,将其他任何计为 1,然后对结果数组 0 和 1 求和。
接下来,第 2 部分: 我真的很想要一个公式 return 其中:课堂 1 = 5,课堂 2 = 4
最简单的方法是添加辅助列。假设您的数据从 A2 开始,请使用以下内容:
=IF(OR(LEFT(A2,9)="Classroom", A2 = ""), "",LOOKUP(2,1/(LEFT(A:A2, 9)="Classroom"),A:A2))
这个公式的工作原理是检查它上面的所有内容,并创建一个 TRUE/FALSE (1/0) 的数组来判断它是否是教室。然后,当你到达终点时,你尝试在 1 和 0 的数组中找到一个 2。显然你不能,所以它默认为最后一个小于自身的值。这是最后一个(最后一个教室)。然后索引给出该课堂记录的位置并将其打印出来。
然后,您可以只在辅助列上使用 countif,这样我们就可以按班级分区对其进行计数。假设您在 f1 中有教室 1,在 f2 中有教室 2,依此类推 -
=COUNTIF($B:$B, F1)
下面的屏幕截图,尽管出于某种原因我无法将其作为 link
嵌入
首先添加一个辅助列来显示一行与哪个教室相关。假设数据位于从 A2
开始的第 A
列中,将此公式放入 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*")
总计:
=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))))
首先我想说,我确实看到了类似的问题;但是,如果单元格确实包含部分字符串,他们会对单元格进行计数。那个版本的公式我水平不行。
我用它做什么?我会有一个看起来类似于此的 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" 的所有项目,第二件事我想完成(如果可能的话,这可能太多了)如果我可以计算每个 class房间分开。我的意思是,这些专栏的大小各不相同,并且每个月都会向我发送一份新文件。我真的想要一个 return 的公式:教室 1 = 5,教室 2 = 4,等等。我有 80 多个 class 房间,不能继续使用每个 class 的一个公式作为重新调整范围非常耗时。 (因为范围大小不同,我还没有找到更好的方法)。
有人能帮忙吗?我不知所措。
因为您有一个由两部分组成的问题,所以很难将所有这些都放入评论中
第 1 部分: 一,我想计算此列中不包含单词 "Classroom"
的所有项目这部分非常简单。这将计算你所有的 non-classroom 个:
=SUMPRODUCT(--(LEFT(A1:A22, LEN("Classroom")) <> "Classroom"))
但是,它会计算空白(因此您的示例数据将为 19)。如果您不想计算空格:
=SUMPRODUCT(--(LEFT(A1:A22, LEN("Classroom")) <> "Classroom") * (A1:A22 <> ""))
这将 return 17.
基本上,这 2 个公式的工作原理是获取您提供的数组,然后比较每个值以查看它是等于 classroom 还是空白。它将那些计为 0,将其他任何计为 1,然后对结果数组 0 和 1 求和。
接下来,第 2 部分: 我真的很想要一个公式 return 其中:课堂 1 = 5,课堂 2 = 4
最简单的方法是添加辅助列。假设您的数据从 A2 开始,请使用以下内容:
=IF(OR(LEFT(A2,9)="Classroom", A2 = ""), "",LOOKUP(2,1/(LEFT(A:A2, 9)="Classroom"),A:A2))
这个公式的工作原理是检查它上面的所有内容,并创建一个 TRUE/FALSE (1/0) 的数组来判断它是否是教室。然后,当你到达终点时,你尝试在 1 和 0 的数组中找到一个 2。显然你不能,所以它默认为最后一个小于自身的值。这是最后一个(最后一个教室)。然后索引给出该课堂记录的位置并将其打印出来。
然后,您可以只在辅助列上使用 countif,这样我们就可以按班级分区对其进行计数。假设您在 f1 中有教室 1,在 f2 中有教室 2,依此类推 -
=COUNTIF($B:$B, F1)
下面的屏幕截图,尽管出于某种原因我无法将其作为 link
嵌入首先添加一个辅助列来显示一行与哪个教室相关。假设数据位于从 A2
开始的第 A
列中,将此公式放入 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*")
总计:
=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))))