我正在寻找一个 Excel 公式,用于查找子字符串并计算唯一值。
假设 B 列包含:
堪萨斯粉红鱼
堪萨斯粉红鱼
堪萨斯粉红鱼
堪萨斯_粉红_鸟
堪萨斯_粉红_海龟
密苏里_红_鸟
密苏里_红_鸟
密苏里_粉红_鸟
密苏里_粉红_鸟
俄亥俄_粉红色_鱼
俄亥俄_绿_鱼
俄亥俄_绿_海龟
俄亥俄_绿_海龟
寻找“粉色”物品的数量。 粉红色将出现在公式中,不一定是对单元格的引用。
答案是4。
堪萨斯_粉红_鱼 堪萨斯粉红鸟 堪萨斯粉红海龟 密苏里_粉红_鸟
我不是在找名单,我是在找计数。
我尝试了一些方法,但要么得到错误、#value,要么得到数字 100(我认为这可能是我尝试使用的函数之一的上限)。
实际列表超过 38K 行。 手工做的话答案是1K多一点:
=COUNTA(UNIQUE(过滤器(B:B,ISNUMBER(SEARCH("Pink",B:B))))) =COUNTA(唯一(过滤器(B:B,ISNUMBER(搜索(“粉红色”,B:B)))))
我原本期待 1,094
=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
我们就得到了预期的结果。