如何在Excel中查找自定义唯一值?

How to find custom unique values in Excel?

提问人:Marci 提问时间:11/1/2023 更新时间:11/4/2023 访问量:126

问:

我在Excel中有以下值:。 如果我在此数组上运行 Unique 公式,则它将返回 .{"Apple", "Orange", "Orange", "Banana", "Apple}{"Apple", "Orange", "Banana"}

问题是有时我的 Excel 值中有拼写错误,所以我可能有以下值: .这样,Unique 公式将返回以下数组: ,但是,我希望它返回 。没有拼写错误的计数值始终高于有拼写错误的值的计数。{"Apple", "Applee", "Orange", "Orange", "Orang", "Banana", "Apple}{"Applee", "Orange", "Orang", "Banana", "Apple}{"Apple", "Orange", "Banana"}

我想做的是,如果给定单元格的唯一字符少于 3 个,那么列表中已有的值,则不要将其计为唯一值。

是否可以只使用内置公式?我会尽量避免不惜一切代价使用 VBA

Excel excel 公式 Office365 数组公式

评论

6赞 Kwright02 11/1/2023
你没有理由这样做。它过于复杂,只需使用防止拼写错误的数据验证规则即可解决。
2赞 BigBen 11/1/2023
Power Query中的模糊匹配可能会有所帮助?
3赞 Kwright02 11/1/2023
@Marci为什么数据验证不是一种选择?它内置于 Excel 中
4赞 Scott Craner 11/1/2023
当您具有有效的唯一值但接近匹配时,问题就来了:如果您没有有效值的列表,则 Excel 无法知道这些值是否计为有效的唯一值条目。他们有 4 个共同的字母,其中一个会被你的 3 个字母规则跳过。他们说的是,您应该使用用户可以选择的设置下拉列表来控制数据输入,而不是试图处理人为错误。CherryBerry
1赞 P.b 11/1/2023
完全。如果你能定义什么是错别字,它就可以计算出来,如果你不能定义它,应该计算什么?

答:

-1赞 Spectral Instance 11/1/2023 #1

如果您在一列中设置了正确的值,然后在同一行右侧的单元格中定义可能的拼写错误,则可以使用此公式Screenshot illustrating suggested formula

=UNIQUE(MAP({"Apple","Applee","Orange","Orange","Orng","Banna","Apple"},LAMBDA(a,INDEX(F1:F3,INT((MATCH(1,TOROW(--(a=F1:I3)),0)-1)/4)+1,1))),TRUE)

(这是因为“查找”范围内有 4 列 -/4F1:I3)

评论

0赞 Frank Ball 11/2/2023
拼写不正确的变体太多,无法正常工作。Aples, pples appples, applse, appels, appls, appes 只是一个快速的开始,我可能会想出至少十几种拼错苹果的方法。
0赞 Spectral Instance 11/2/2023
@FrankBall虚张声势
0赞 DjC 11/4/2023 #2

实现您所要求的最佳方法是维护一个常见拼写错误的单词列表及其相应的正确单词。如果列表相对较短,您可以使用该函数;如果没有,则更容易与单独的查找表一起使用。SWITCH()XLOOKUP()

示例 1:函数SWITCH()

=SWITCH(D2:D15, "Applee","Apple", "Appel","Apple", "Banaan","Banana", "Orang","Orange", "Oranges","Orange", D2:D15)

SWITCH()查看 Range 中的每个值,并将找到的任何匹配值替换为其相应的结果。匹配值和结果成对输入,总共最多可以包括 126 对。最后一个可选参数是未找到匹配项时返回的默认值,在本例中为 range 中存在的原始值。D2:D15D2:D15

结果 1:

switch_function.png

备注:上面屏幕截图中用于生成唯一列表的公式是,返回每个唯一项的计数的公式是 。监视唯一列表中是否有任何新拼写错误的单词,并在出现时更新公式。=SORT(UNIQUE(F2#))=COUNTIF(F2#, H2#)SWITCH()

示例 2:使用单独的查找表XLOOKUP()

=IFNA(XLOOKUP(D2:D15, K2:K6, L2:L6), D2:D15)

在此示例中,拼写错误的单词列在 range 中,相应的正确单词列在 range 中。如果 未找到匹配项,则该函数用于从 range 返回原始值,因为可选的 [if_not_found] 参数将不接受值范围。K2:K6L2:L6IFNA()D2:D15XLOOKUP()

结果 2:

xlookup_function.png

示例 3:使用结构化表引用XLOOKUP()

=IFNA(XLOOKUP([@Item], Table2[Incorrect], Table2[Correct]), [@Item])

这与示例 2 的方法相同,但使用 Excel 表格。上面的公式用于在表 1 中创建一个计算列,不正确/正确的单词列表存储在表 2 中。

结果 3:

xlookup_tables.png

备注:上面屏幕截图中用于生成唯一列表的公式是,返回每个唯一项的计数的公式是 。=SORT(UNIQUE(Table1[Corrected]))=COUNTIF(Table1[Corrected], G2#)