Excel VBA。比较一个字符串中的所有字母是否在另一个字符串中

问题描述:

我想比较一个字符串是否具有另一个字符串的所有字符。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循环访问另一个数组是正确的。 –

好了 - 我觉得无聊就位。看看你的代码,你几乎就在那里。 认为这应该做你想做

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