![ExcelFuzzyLookUp:比较同一行中的单元格](https://linux22.com/image/1629354/ExcelFuzzyLookUp%EF%BC%9A%E6%AF%94%E8%BE%83%E5%90%8C%E4%B8%80%E8%A1%8C%E4%B8%AD%E7%9A%84%E5%8D%95%E5%85%83%E6%A0%BC.png)
我正在尝试比较位于同一行和同一表中的两个单元格。我一直尝试使用模糊查找来提供相似度度量,但结果却是单元格会移动以匹配我要查找的内容。我不想移动单元格,而是希望将左侧的单元格与旁边的单元格进行比较。
如果上面没有意义,这就是我想要实现的目标:
| Source 1 | Source 2 | Similarity | |
|---------------|--------------|------------|---------------------------------------------------|
| Yellow Jumper | Yellow Shirt | 0.x | (x being the similarity number e.g. 0.95 similar) |
但实际情况是,下面的单元格混淆了,例如,黄色套头衫与绿色套头衫进行比较。我如何才能实现上述目标?
答案1
不喜欢模糊查找 (FL),因为关于它的公开内容表明,作为决策依据的衡量标准的“相似性”很可能是错误的精度,因此人们会做出自信的选择,但是基于垃圾 — — “垃圾进,垃圾出”的创造是有充分理由的 — — 因此这是否是一个有效的选择对于决策来说并不明显。
但是,尽可能地抛开这一点(因为你正在受到该预订变体的攻击),请记住 FL 是基于整个单元格而不是部分单元格进行匹配的。因此“黄色跳线”和“绿色跳线”匹配到任何程度(甚至可能是 FL 断言的任何程度),因为两者都包含“跳线”。
解决该特定问题的一个方法是向您的表中添加列(在 Excel 中通常称为“辅助列”),您尝试在其中“集中”您想要匹配尝试的数据,以便 FL 仅考虑您认为重要的部分。
因此,例如,您可能有一列,其中包含一个公式,该公式由您想要用于匹配的一到几个(我猜是“很多”)单词的串联(或内部数组的文本连接)组成。该公式可能SEARCH()
针对FIND()
每个单词,一个接一个(它们之间有任何类型的串联),并且如果匹配(使用的函数不会返回错误),则搜索的单词将添加到字符串中。如果没有,则不添加。
似乎只需用所有单词组成字符串即可省去麻烦,但这会降低匹配“相似度”,从而误导您。上面的方法会给出更有效的“相似度”。但对于您的目的,它可能不需要,一个简单的完整字符串可能就足够了。但无论哪种方式,如果例如“jumper”不是您想要匹配的东西,则不包括它将实现这一目标。
对于 FL 中积极使用的每个列,都需要这样的列。原因显而易见:再次是“相似性”评级。如果只在“黄色套头衫”等短语中包含“黄色”,则仅匹配目标的 50% 左右,从而生成低得多的“相似性”值,并且如果您仅列出高于某个级别的匹配项,则可能会丢失一些匹配项。
另一方面,上述操作有点像创建自己的 FL,只需使用 AddIn 来完成最后一步,而无需编写更多公式。这让人感到疑惑。