Прокрутите столбец C и верните в столбец B содержимое без первых символов X - PullRequest
0 голосов
/ 18 марта 2019

Цель: если столбец C не начинается с «XXX *», верните эту ячейку минус первые 5 символов.

Пример:

C2 = XXX                 Then                 B2 would be empty
C3 = YYY1220190318       Then                 B3 = 20190318
C4 = UGA1535D            Then                 B4 = 1535D 

'Вот мой фактический код

  Dim arrData As Variant, LastRow As Long, i As Long, ws As Worksheet

            Set ws = ThisWorkbook.Sheets("Long List 15032019") 'change 

the name of the sheet to the one you are doing the code

        With ws
            LastRow = .Cells(.Rows.Count, 3).End(xlUp).Row
            arrData = .Range("A2", .Cells(LastRow, "C")).Value
            For i = 1 To UBound(arrData)
                If arrData(i, 3) Like "Bus*" Then
                    arrData(i, 1) = "BU CRM"
                Else
                    arrData(i, 1) = "CSI ACE"
                End If
                If arrData(i, 3) Like "CSI*" Or arrData(i, 3) = vbNullString Then
                    arrData(i, 2) = vbNullString
                    Else: arrData(i, 2) = Right(arrData(i, 3), 12)
                End If
            Next i
            .Range("A2", .Cells(LastRow, "C")).Value = arrData

             End With

Я думаю, что это одна строка кода, которую нужно настроить Else: arrData(i, 2) = Right(arrData(i, 3), 12)

Я пытался использовать -12 или ВЛЕВО. Но это не сработает.

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Как насчет:

Sub KleanUp2()
    Dim cell As Range, v As String, v2 As String
    For Each cell In Intersect(Range("C:C"), ActiveSheet.UsedRange)
        v = cell.Value
        If Len(v) < 4 Then
            vr = ""
        Else
            vr = Mid(v, 4, 9999)
        End If
        cell.Offset(0, -1) = vr
    Next cell

End Sub

Если значение в столбце C превышает 3 символа, первые три символа удаляются и результат помещается в одну строку в столбце B

Если значение в столбце C меньше 4 символов (или ячейка пуста) , то в столбец B помещается ноль. тот же ряд.

0 голосов
/ 18 марта 2019

Попробуйте:

Option Explicit

Sub test()

    Dim Lastrow As Long, Row As Long

    With ThisWorkbook.Worksheets("Sheet1")

        Lastrow = .Cells(.Rows.Count, "C").End(xlUp).Row

            For Row = 1 To Lastrow

                If Left(.Range("C" & Row).Value, 3) = "XXX" Then
                    .Range("B" & Row).Value = ""
                Else
                    .Range("B" & Row).Value = Mid(.Range("C" & Row).Value, 4, Len(.Range("C" & Row).Value) - 3)
                End If

            Next Row

    End With

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