基于列

时间:2016-11-01 12:54:16

标签: excel excel-vba excel-formula vba

我有两列代码涉及各种产品。它是一个由3个部分组成的代码,用' - '分隔。 3个部分中的每一个的长度不是恒定的并且是字母数字。

我需要根据4个标准对它们进行分类: 将B中的每个代码与A进行比较,反之亦然,并将它们全部分类如下和图像中所示: 1.完全匹配的代码 2.前缀或后缀更改代码 3.完全新的代码

然而似乎有一个并发症。两列中的代码不一定是排序的,并且在另一列中的任何地方都可以匹配,是否有办法查找文本然后执行比较功能。我知道这会带来很多复杂性 - 我的想法是查找值,然后传递参数以获得类别..再次感谢!!! - user1087661 1小时前

请帮助我实现这一目标。是否有任何公式可以检查数组和查找函数?非常感谢你的支持。

Code Categorization

2 个答案:

答案 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组都这样做。

从那时起,找到匹配的组应该会非常直接。