Excel公式:计算包含区分大小写的单元格数量

220 多个excel快捷键速查表  适用Windows和Mac , 工作效率提升10倍 免费下载>>>

下载 “excel快捷键速查表” Excel快捷键速查表.zip – 已下载54次 – 3 MB

Excel 公式:计算包含区分大小写的单元格

通用公式

=SUMPRODUCT(ISNUMBER(FIND(value,data)))
概括 

要计算包含特定文本(即包含子字符串)的单元格,同时考虑大小写,您可以使用基于ISNUMBERFIND函数的公式以及SUMPRODUCT 函数。在所示示例中,E5 包含以下公式,复制如下:

=SUMPRODUCT(ISNUMBER(FIND(D5,data)))

其中“数据”是命名范围B5:B15。结果是 D 列中列出的每个子字符串的区分大小写的计数。

解释 

在此示例中,目标是以区分大小写的方式计算作为子字符串出现的代码。函数COUNTIFCOUNTIFS都是计算文本值的好选择,但是这些函数不区分大小写,因此不能用来解决这个问题。解决方案是使用 FIND 函数ISNUMBER 函数来检查子字符串和SUMPRODUCT 函数来将结果相加。

FIND 函数始终区分大小写,并采用三个参数:  find_text、 within_textstart_num搜寻文字是我们要寻找的文本,within_text中是我们正在寻找的内文。 Start_num是开始查找find_text 的位置 Start_num默认为 1,因此在这种情况下我们不提供值,因为我们总是希望 FIND 从第一个字符开始。当搜寻文字 被发现里面 within_text中,FIND返回位置找到的文本多项:

=FIND(“ABC”,“ABC-101”) // returns 1

=FIND(“ABC”,“10-ABC-101”) // returns 4

find_text is not found 时,FIND 返回 #VALUE!错误:

=FIND(“ABC”,“XYZ-101”) // returns #VALUE!

这意味着我们可以使用 ISNUMBER 函数将 FIND 的结果转换为 TRUE 和 FALSE 值。任何数字都会导致 TRUE,任何错误都会导致 FALSE:

=ISNUMBER(FIND(“ABC”,“ABC-101”)) // returns TRUE =ISNUMBER(FIND(“XYZ”,“ABC-101”)) // returns FALSE

这里更详细地解释了这个想法。

在所示示例中,我们在 D 列中有四个子字符串,在 B5:B15 中有各种代码,即 命名范围 数据。我们要计算 D5:D8 中的每个子串在 B5:B15 中出现的次数,这个计数需要区分大小写。

复制下来的 E5 中的公式是:

=SUMPRODUCT(ISNUMBER(FIND(D5,data)))

从内到外,FIND 函数用于查找子字符串,如下所示:

FIND(D5,data)

FIND 在data 的所有单元格中检查 D5 (“ABC”) 中的值 。因为我们在within_text参数中给 FIND 多个值,所以它返回多个结果。总的来说,FIND 在一个数组中返回 11 个值(B5:B15 中的每个代码一个),如下所示:

{4;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;4;4;#VALUE!;4}

每个数字代表 B5:B15 中包含“ABC”的单元格。每个#VALUE!表示 B5:B15 中不包含“ABC”的值。仔细观察,我们可以看到 FIND 在 11 个单元格中的 4 个单元格中找到了“ABC”。该数组直接返回给ISNUMBER 函数,该函数将每个值转换为 TRUE 或 FALSE:

ISNUMBER({4;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;4;4;#VALUE!;4})

ISNUMBER 返回一个包含 11 个 TRUE 和 FALSE 值的数组:

{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE}

因为我们要计算结果,所以我们使用双负(–) 将 TRUE 和 FALSE 值转换为 1 和 0:

{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE}

结果数组如下所示:

{1;0;0;0;0;0;0;1;1;0;1} // 11 results

像这样使用双重否定是布尔逻辑的一个例子,这是一种处理 TRUE 和 FALSE 值(如 1 和 0)的技术。生成的数组直接传递给 SUMPRODUCT 函数:

=SUMPRODUCT({1;0;0;0;0;0;0;1;1;0;1}) // returns 4

只需处理一个数组,SUMPRODUCT 将数组中的所有数字相加并返回最终结果: 4. 向下复制公式时,它返回 D 列中每个子字符串的计数。对数据的引用 不会改变,因为命名范围 自动表现得像一个 绝对引用

注意:因为 SUMPRODUCT 可以原生处理数组,所以不需要使用 Control+Shift+Enter 来输入这个公式。

220 多个excel快捷键速查表  适用Windows和Mac , 工作效率提升10倍 免费下载>>>

下载 “excel快捷键速查表” Excel快捷键速查表.zip – 已下载54次 – 3 MB

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注