我有两列代码涉及各种产品。它是一个由3个部分组成的代码,用' - '分隔。 3个部分中的每一个的长度不是恒定的并且是字母数字。
我需要根据4个标准对它们进行分类: 将B中的每个代码与A进行比较,反之亦然,并将它们全部分类如下和图像中所示: 1.完全匹配的代码 2.前缀或后缀更改代码 3.完全新的代码
然而似乎有一个并发症。两列中的代码不一定是排序的,并且在另一列中的任何地方都可以匹配,是否有办法查找文本然后执行比较功能。我知道这会带来很多复杂性 - 我的想法是查找值,然后传递参数以获得类别..再次感谢!!! - user1087661 1小时前
请帮助我实现这一目标。是否有任何公式可以检查数组和查找函数?非常感谢你的支持。
答案 0 :(得分:3)
您可以使用split
功能和select case
来解决您的问题。我假设您知道如何使用UDF。
Function CompareCode(Text1, Text2, Optional Delim = "-")
Dim T1, T2, CC
T1 = Split(Text1, Delim)
T2 = Split(Text2, Delim)
CC = (T1(0) <> T2(0)) * 100 + (T1(1) <> T2(1)) * 10 + (T1(2) <> T2(2)) * 1
CC = Format(-CC, "000")
Select Case CC
Case "000": CompareCode = "Same code"
Case "100": CompareCode = "Prefix changed"
Case "010": CompareCode = "Base changed"
Case "110": CompareCode = "Prefix and base changed"
Case "001": CompareCode = "Suffix changed"
Case "101": CompareCode = "Prefix and suffix changed"
Case "011": CompareCode = "Base and suffix changed"
Case "111": CompareCode = "Totally new code"
Case Else:
End Select
End Function
答案 1 :(得分:0)
这只是一个部分答案:
对于第一部分,即使是非常匹配的代码,您可以使用简单的查找公式,例如SUMIFS()
,其中您将B列中的项目与A列中的整个集合进行匹配。
对于其他两个要求,如果我想通过公式执行此操作,那么我将使用LEN()
,LEFT()
和RIGHT()
公式来提取前缀,基数和后缀分成不同的列。对A组和B组都这样做。
从那时起,找到匹配的组应该会非常直接。