Excel宏来获取数组字符串的所有组合

时间:2014-11-01 23:53:03

标签: excel excel-vba excel-formula vba

我正在尝试创建一个宏函数来生成一个字符串,该字符串包含数组字符串的所有组合,然后检查另一个字符串是否属于这些组合。

例:
A1中,我有a;b;c;d;e,在B1我有b;d;a;c;e。我正在寻找一个函数来放入C1,以便它查找A1的所有组合并验证B1。如果其中一个B1组合中存在A1字符串,那么C1应该通过,否则它应该失败。 示例A1的可能组合:

a;b;c;d;e
b;c;d;e;a
c;d;e;a;b
d;e;a;b;c
e;a;b;c;d
b;a;c;e;d 
etc

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这可能是一个起点。

Function IsCombination(test As Range, base As Range) As Boolean
    Dim testArr() As String, baseArr() As String, i As Integer

    testArr = Split(test, ";") //B1 in your example
    baseArr = Split(base, ";") //Al in your example

    If UBound(testArr) <> UBound(baseArr) Then
        IsCombination = False
        Exit Function
    Else
        For i = 0 To UBound(testArr)
            If InStr(Join(baseArr), testArr(i)) = 0 Then
                IsCombination = False
                Exit Function
            End If
        Next i
    End If

    IsCombination = True
End Function

首先检查两个字符串是否长度相同。如果没有,则它们不能组合匹配。

然后检查每个字符以查看它是否在另一个字符串数组中。如果每个角色都找到匹配,那么它就是一个组合。