Разделить данные и сравнить с помощью VBA - PullRequest
0 голосов
/ 06 ноября 2018

В настоящее время я сталкиваюсь с проблемой и не знаю, как мне ее решить. Мне нужно разделить элемент с разделителем "|". И, получить только значения в Array [0] и Array [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|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 в For Each. enter image description here

У вас есть идеи, почему я столкнулся с этой ошибкой?

1 Ответ

0 голосов
/ 06 ноября 2018

Мне нужно добавить это как ответ, так как в комментариях оно не будет.
Этот код будет выполнен, но не уверен, что он дает результат, который вам нужен - это может быть просто рабочая копия вопроса?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...