2014-11-01 106 views
0

我想創建一個宏函數來生成一個具有數組字符串的所有組合的字符串,然後檢查另一個字符串,如果它是這些組合的一部分。Excel宏以獲得數組字符串的所有組合

示例:
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 

您的幫助表示讚賞。

回答

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 

首先檢查兩個字符串的長度是否相同。如果不是那麼他們不能組合比賽。

然後檢查每個字符是否在另一個字符串數組中。如果每個角色都找到了匹配,那麼它就是一個組合。

相關問題