2016-11-17 84 views
0

我想比較一個字符串是否具有另一個字符串的所有字符。Excel VBA。比較一個字符串中的所有字母是否在另一個字符串中

實施例:

字符串1 Hejslclo

字符串2 你好

真串2具有一個字符串的所有字符。

我已經把串1到一個數組,我覺得應該有一個循環來檢查使用INSTR

我第一次嘗試在此:

Sub StringintoArray() 


Dim Temp As String 

Dim MyString As String 

Dim String2 As String 


MyString = "Heaslsflo" 

String2 = "Hello" 


Temp = StrConv(MyString, vbUnicode) 

Temp = Left(Temp, Len(Temp) - 1) 

aLetter = Split(Temp, Chr(0)) 



'Dim StartRow As Integer 

Dim i As Integer 



For i = 0 To L(Temp) 

   If InStr(i, String2, aLetter(I)) <> 0 Then 

       MsgBox ("Yes") 

   Else 

       MsgBox ("No") 

   End If 

Next i 

End Sub 
+3

你真的需要深入研究這段代碼自己什麼。有人可能會回答他們是否足夠無聊,但廣泛地說,你會發現,如果看起來你沒有花時間爲自己編寫代碼,那麼這裏的幫助人員不會麻煩回答。 –

+0

這應該實際上返回'False',按照你解釋的方式。字符串2不具有字符串1的所有字符。實際上是相反的。字符串1具有字符串2的所有字符。字符串2在字符串1中是「包含」的......這是您爲自己編碼時需要決定的問題之一。你想比較字符串1對字符串2或字符串2對字符串1?取決於你想要什麼,將成爲一個數組的字符串將會改變。儘管如此,創建一個數組並通過InStr循環訪問另一個數組是正確的。 –

回答

2

好了 - 我覺得無聊就位。看看你的代碼,你幾乎就在那裏。 認爲這應該做你想做

Option Explicit 
Public Function CompareStrings(string1 As String, string2 As String) As Boolean 
    Dim i As Long, j As Long, k As Long 
    Dim arr1 As Variant, arr2 As Variant 

    ' Set to default 
    CompareStrings = False 

    ' Split strings into arrays 
    arr1 = Split(StrConv(string1, vbUnicode), Chr(0)) 
    arr2 = Split(StrConv(string2, vbUnicode), Chr(0)) 
    ' Initialise counter 
    k = 0 
    ' Loop over both arrays 
    For i = LBound(arr2) To UBound(arr2) 
     For j = LBound(arr1) To UBound(arr1) 
      If LCase(arr2(i)) = LCase(arr1(j)) Then 
       k = k + 1 
       Exit For 
      End If 
     Next j 
    Next i 
    ' Test if counter is equal to array length and set answer if so 
    If k - 1 = UBound(arr2) Then CompareStrings = True 
End Function 

Public Sub TestComparison() 
    Dim string1 As String, string2 As String 
    string1 = "Hello" 
    string2 = "Hejslclo" 
    If CompareStrings(string1:=string1, string2:=string2) Then 
     Debug.Print string1; " contains "; string2 
    Else 
     Debug.Print string1; " does not contain "; string2 
    End If 
End Sub 
相關問題