Excel 公式查找子字符串并计算唯一值

问题描述 投票:0回答:1

我正在寻找一个 Excel 公式,用于查找子字符串并计算唯一值。

假设 B 列包含:

堪萨斯粉红鱼

堪萨斯粉红鱼

堪萨斯粉红鱼

堪萨斯_粉红_鸟

堪萨斯_粉红_海龟

密苏里_红_鸟

密苏里_红_鸟

密苏里_粉红_鸟

密苏里_粉红_鸟

俄亥俄_粉红色_鱼

俄亥俄_绿_鱼

俄亥俄_绿_海龟

俄亥俄_绿_海龟

寻找“粉色”物品的数量。 粉红色将出现在公式中,不一定是对单元格的引用。

答案是4。

堪萨斯_粉红_鱼 堪萨斯粉红鸟 堪萨斯粉红海龟 密苏里_粉红_鸟

我不是在找名单,我是在找计数。

我尝试了一些方法,但要么得到错误、#value,要么得到数字 100(我认为这可能是我尝试使用的函数之一的上限)。

实际列表超过 38K 行。 手工做的话答案是1K多一点:

  • 过滤器 > 包含 粉色
  • 将结果复制到另一个选项卡
  • 排序
  • 删除重复项

=COUNTA(UNIQUE(过滤器(B:B,ISNUMBER(SEARCH("Pink",B:B))))) =COUNTA(唯一(过滤器(B:B,ISNUMBER(搜索(“粉红色”,B:B)))))

我原本期待 1,094

excel-formula count substring unique
1个回答
0
投票

=SUM(--ISTEXT(UNIQUE(TOCOL(IFS(ISNUMBER(FIND("_Pink_",A:A)),A:A),2))))

首先检查 A 列是否存在字符串

_Pink_
(区分大小写;如果您希望它不区分大小写,请将 FIND 替换为 SEARCH)。这是用
IFS
包裹的。如果存在,则返回 A 列的值,否则返回错误。

此值和错误数组包含在

TOCOL
中,并带有参数
2
以忽略错误值。

这将返回包含

_Pink_
的所有值的数组。将其包裹在
UNIQUE
中只留下数组中不同的唯一值。 我们需要计算唯一值的数量,但由于我们也有可能找不到匹配项,因此
UNIQUE
返回包含错误的一行。如果我们随后使用
ROWS
COUNTA
,它将返回 1 而不是 0,因此我们将其包装在
ISTEXT
中,这会导致每个非错误行都为 TRUE,或者在出现错误的情况下返回
FALSE 
.

在值前面添加

--
将 TRUE 转换为 1 或将 FALSE 转换为 0。如果我们现在
SUM
我们就得到了预期的结果。

© www.soinside.com 2019 - 2024. All rights reserved.