Excel 使用vba拆分数据并进行比较
目前,我面临一个问题,不知道如何解决它。我需要用分隔符“|”拆分元素。并且,仅获取数组[0]和数组[3]中的值。然后我需要将它与另一个字符串[varr]进行比较。arr和varr中的值存储在数组中 比如说,Excel 使用vba拆分数据并进行比较,excel,vba,Excel,Vba,目前,我面临一个问题,不知道如何解决它。我需要用分隔符“|”拆分元素。并且,仅获取数组[0]和数组[3]中的值。然后我需要将它与另一个字符串[varr]进行比较。arr和varr中的值存储在数组中 比如说, Dim arr As Variant Dim varr As Variant arr = 111|Sample1|Test1 arr = 222|Sample2|Test2 arr = 333|Sample3|Test3 varr = 111|Sample1|Tes
Dim arr As Variant
Dim varr As Variant
arr = 111|Sample1|Test1
arr = 222|Sample2|Test2
arr = 333|Sample3|Test3
varr = 111|Sample1|Test5
varr = 222|Sample2|Test4
varr = 333|Sample3|Test3
在这个场景中,我需要遍历arr/varr,并使用分隔符“|”拆分字符串,并连接数组[0]和数组[3]。然后,将其与varr(相同的过程)进行比较。我的代码如下:
Dim x As Variant, y As Variant
Dim match As Boolean
Dim Result(), Result2() As String
Dim DisplayText, DisplayText1, DisplayText2, DisplayText3, DisplayText4, DisplayText5 As String
For Each x In arr
match = False
Result = Split(x, "|")
DisplayText = Result(0)
DisplayText1 = Result(2)
DisplayText2 = DisplayText & DisplayText1
For Each y In varr
Result2 = Split(y, "|")
DisplayText3 = Result2(0)
DisplayText4 = Result2(2)
DisplayText5 = DisplayText3 & DisplayText4
If LCase(DisplayText2) = LCase(DisplayText5) Then
MsgBox "No Change"
match = True
End If
Next y
If Not match Then
MsgBox "Change"
End If
Next
我得到了这个错误,它指向每个的y。
你知道我为什么会遇到这个错误吗?我必须添加这个作为答案,因为它不会出现在评论中。
这段代码将执行,但不确定它是否给出了您想要的结果-它可能只是问题的工作副本
Sub Test()
Dim arr As Variant, varr As Variant
Dim x As Variant, y As Variant
Dim Result As Variant, Result2 As Variant
Dim DisplayText As String, DisplayText1 As String
Dim Match As Boolean
arr = Array("111|Sample1|Test1", "222|Sample2|Test2", "333|Sample3|Test3")
varr = Array("111|Sample1|Test5", "222|Sample2|Test4", "333|Sample3|Test3")
For Each x In arr
Result = Split(x, "|")
DisplayText = Result(0) & Result(2)
For Each y In varr
Result2 = Split(y, "|")
DisplayText1 = Result2(0) & Result2(2)
If LCase(DisplayText) = LCase(DisplayText1) Then
MsgBox "No Change"
Match = True
End If
Next y
If Not Match Then
MsgBox "Change"
End If
Next x
End Sub
y是什么类型?尝试使用
option explicit
并声明所有变量。为了引起您的注意,带有j变量的for循环也没有任何作用。由于在循环中没有引用j,因此它只会多次执行这些操作,而不会更改最终结果。请按照错误的说明操作,并将y变为变量。同样值得注意的是,在x循环中没有出现此错误的原因是因为Dim x,y as string
仅Dimy
作为string
而实际上Dimx
作为变量
类型。这里真正重要的是停止像Dim x这样的声明,y作为字符串
,而将likeDim x声明为字符串,y作为字符串
或将它们放在单独的行中。若要解决您的问题,y
必须声明为类型变量
,而不是字符串
。