2016-11-17 4 views
0

文字列に別の文字列のすべての文字が含まれているかどうかを比較したいと思います。Excel VBA。文字列内のすべての文字が別の文字列内にあるかどうか比較する

例:

文字列1 Hejslclo

文字列2 こんにちは

トゥルー文字列2文字列1のすべての文字を持っています。

私は、配列に文字列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つです。文字列1と文字列2または文字列2を文字列1と比較したいですか?必要に応じて、配列になる文字列が変更されます。 InStrを使って配列を作成し、もう一方をループして正しいパスにいます。 –

答えて

2

[OK]を - 私は退屈とビットしまいました。あなたのコードを見て、あなたは非常に近くにいた。これはあなたがあなたが本当にこのコードを自分掘り下げる必要がある

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 
関連する問題