VBScript для разбиения строк по декартовому произведению - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть файл Excel, созданный другой программой. Мне нужно разделить и извлечь строки Excel таким образом:

источник:

enter image description here

Excel после действия «split» должен быть:

enter image description here

способ сделать это понятен для меня, но мне не удалось написать это на VB логика должна быть: у нас есть 3 столбца: имя, серверы, учетные записи -> результаты будут содержать декартово произведение servers X accounts для каждого «имени».

int Count1=1 loop for counting the number of column B (servers-separated by comma)
int Count2=1 loop for counting the number of column C (accounts-separated by comma)

1 loop i=1 from i to count1(servers)

for each server
loop: j=1 from j to count2(account)
create a new row(column A:=Name, column B:=server[i],coulmn c:=account[j]) 

move to next row 

Мне просто нужна помощь с синтаксисом.

1 Ответ

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

Попробуй,

Sub test()
    Dim vDB, vR(), vS(1 To 2), s
    Dim i As Long, j As Integer, n As Long
    Dim c1 As Integer, c2 As Integer

    vDB = Range("a1").CurrentRegion

    For i = 1 To UBound(vDB, 1)
        vS(1) = Split(vDB(i, 2), ",")
        vS(2) = Split(vDB(i, 3), ",")
        If InStr(vDB(i, 2), ",") Then
            c1 = 1
            c2 = 2
        Else
            c1 = 2
            c2 = 1
        End If

        For Each s In vS(c1)
            n = n + 1
            ReDim Preserve vR(1 To 3, 1 To n)
            vR(1, n) = vDB(i, 1)
            vR(c1 + 1, n) = s
            vR(c2 + 1, n) = vS(c2)(0)
        Next s
    Next i
    Sheets.Add
    Range("a1").Resize(n, 3) = WorksheetFunction.Transpose(vR)

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...