如何使用单个值

时间:2016-09-13 13:42:35

标签: excel vba excel-vba

Public Function SameStuff(s1 As String, s2 As String) As Boolean
    Dim bad As Boolean

    SameStuff = False
    ary1 = Split(Replace(s1, " ", ""), ",")
    ary2 = Split(Replace(s2, " ", ""), ",")

    Length1 = UBound (ary1)
    Length2 = UBound(ary2)

    k=1
    If Length1<= Length2 and Length1<>0 then
      for i=0 to Length1-1
        If ary1(i) = ary2(i) then 
          ary3(k,i) = ary1(i)
        End If
      Next i
      k=k+1
    else 
      Exit function
    End If
End Function

这里我从Range(“A1”)中获取值 - (有3个单词)和Range(“A2”)的值 - (有4个单词)。通过在单词之间查找空格并将它们存储在数组中来拆分它们。如果一个数组的长度为3而另一个数组为4,则将比较两个数组中的3个字。如果发现3个单词相同,则Range(“B1”)和Range(“B2”)必须都具有3个单词名称,即Range(“A1”)。Value。我认为这个逻辑可以很好地找到类似的名字,如A1中的“ABC DEF HIJ”和A2中的“ABC DEF HIJ Limited”。

我无法将其放入代码中。

字长不会保持不变,即3,4。

2 个答案:

答案 0 :(得分:1)

使用字典是一个简单的替代方法,您可以使用.exists方法为您执行此操作,您必须将数组(split()的结果)传输到字典中,但这是一个循环,不是太多棘手。或者,您可以将其中一个inputas保留为字符串并仅拆分1,并使用if strStringLeftAlone like "* " & strSection(x) & " *"或使用instr,其想法与搜索" " & strSection(x) & " "相同或查找

答案 1 :(得分:1)

无论数组有多长,这都应该有效,即无论要比较的每个字符串中有多少个单词(和空格)。请注意,我删除了k变量,因为它似乎没有在代码中用于任何目的。然而,该解决方案确实预先假定两个字符串中的最后一个字是不同的。

Public Function SameStuff(s1 As String, s2 As String) As Boolean

    Dim sameBool As Boolean
    Dim i As Long, Length1 As Long, Length2 As Long
    Dim tempArr1 as String, tempArr2 as String
    Dim ary1 as Variant, ary2 as Variant

    ary1 = Split(Replace(s1, " ", ""), ",")
    ary2 = Split(Replace(s2, " ", ""), ",")

    Length1 = UBound (ary1)
    Length2 = UBound(ary2)

   If Length1 <= Length2 and Length1 > 0 then

      For i=0 to Length1-1
         tempArr1 = tempArr1 & ary1(i)
         tempArr2 = tempArr2 & ary2(i)
      Next i

      If tempArr1 = tempArr2 then sameBool = True

   End If

   SameStuff = sameBool

End Function

修改

在我忘记的代码中添加了一些变量声明,否则代码将无法与模块顶部的Option Explicit一起使用。