Манипулирование данными / разделение VBA - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь удалить какой-то текст в VBA. Ниже приведены два текстовых примера, которые я пытаюсь изменить:

Исходные данные

FAST CASH W5600Z *Scenario 1*
FAST CASH 5786Z *Scenario 2*

Требуется вывод

D5600Z (Replacing the "W" with a "D") *Scenario 1*
D5786Z (Adding a "D" before the first numeric character) *Scenario 2*

Это последняя часть моих манипуляций с данными, и код, используемый для манипулирования данными ранее, можно увидеть в приведенном ниже коде:

For Each b In wbRecFile.Sheets("Corrected Data1").Range("B1:B" & Lastrow)
    If b.Value <> "" Then     
        If UCase(Left(b.Value, 1)) = "W" Then b.Value = "D" & Right(b.Value, Len(b.Value) - 1)
        GoTo nextline
    End If

    If IsNumeric(Left(b.Value, 1)) Then b.Value = "D" & b.Value
    GoTo nextline
    End If

    End If 
nextline:     
Next b

Любые предложения о том, как мне этого добиться в VBAбудет высоко ценится.Я могу выполнить эту задачу в формулах Excel, см. Ниже, но я стараюсь изо всех сил избегать этого в качестве решения.

="D"&RIGHT(MID(Cell reference,FIND("W",cell reference),6),5)

1 Ответ

0 голосов
/ 13 декабря 2018

Все, что я использовал приведенный ниже код для решения моей проблемы.

Dim bText As String

Public Sub DisectText()
    Dim myString As String
    myString = bText
    Dim position As Long
    position = GetFirstNumeric(myString)
    If position > 0 Then
    bText = "D" & Mid(myString, position, 5)
    Else
    bText = ""
    End If
End Sub

Public Function GetFirstNumeric(ByVal value As String) As Long
    Dim i As Long
    Dim bytValue() As Byte
    Dim lngRtnVal As Long
    bytValue = value
    For i = 0 To UBound(bytValue) Step 2
        Select Case bytValue(i)
            Case vbKey0 To vbKey9
                If bytValue(i + 1) = 0 Then
                    lngRtnVal = (i \ 2) + 1
                    Exit For
                End If
        End Select
    Next
    GetFirstNumeric = lngRtnVal
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...