VBA извлекает данные из строки - PullRequest
0 голосов
/ 02 мая 2020

Исходные данные: Source Data Image Sheet

Данные для всплывающих окон: Data to be populated Sheet

У меня есть строка типа:

AV0 (25CS, 10P, 5X)

AV0 (10P, 5X)

AV0 (10P)

AV0 (5X)

У меня есть таблица со столбцом AV , CS, P, XI хочу заполнить 0 в ячейке ниже AV, 25 в ячейке ниже CS, 10 в ячейке ниже, 5 в ячейке ниже X.

Пожалуйста, помогите.

Я пытался для CS:

str = Cells(1, 1).Value 'String Value
openPos = InStr(str, "(")
closePos = InStr(str, ")")
Cells(2, 2) = Mid(str, openPos + 1, closePos - openPos - 1) 'String value to cells

1 Ответ

1 голос
/ 02 мая 2020

Существует ошибка с использованием регулярных выражений, поскольку VBA не поддерживает положительные взгляды.

Я не уверен, как вы хотите извлечь результаты, я только что сделал это на листе ниже.

Sub Regex2()

Dim oMatches As Object, i As Long, r As Range

With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "^AV(\d*)\((\d*CS)*,*(\d*P)*,*(\d*X)*\)$"
    For Each r In Range("A1:A4")
        Set oMatches = .Execute(r)
        For i = 0 To 3
            If oMatches(0).submatches(i) <> "" Then
                If i = 0 Then r.Offset(, 1) = oMatches(0).submatches(0) 'AV
                If i = 1 Then r.Offset(, 2) = Replace(oMatches(0).submatches(1), "CS", "") 'CS
                If i = 2 Then r.Offset(, 3) = Replace(oMatches(0).submatches(2), "P", "") 'P
                If i = 3 Then r.Offset(, 4) = Replace(oMatches(0).submatches(3), "X", "") 'X
            End If
        Next i
    Next r
End With

End Sub

enter image description here

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