Как взять определенные символы из середины клетки и поместить их в конец - PullRequest
0 голосов
/ 01 мая 2019

Я нахожусь в процессе очистки некоторых данных. Кто-то еще поместил размер продуктов в середине ячейки, когда он должен быть в конце. Эти размеры варьируются от XXS-XXL. Есть некоторые другие размеры, такие как 1inX6ft. Хотя они, очевидно, имеют больше вариаций (например, определенные дюймы на определенные дюймы или определенные дюймы на определенные ноги), поэтому, хотя формула для извлечения всех типов размеров и размещения их в конце конца была бы идеальной, мне нужно, по крайней мере, получить формулу для возможных размеров XXS-XXL (при условии, что я могу использовать что-то вроде {XS, SM, M, L, XL, XXL} в приведенной формуле, если первое невозможно).

Вот несколько примеров того, что у меня есть:

RC D CLP CLR SM PNK TRTN
RC D CIRQUE S HRN XXS CORAL
RC D LEASH 3/4inX6ft FOX
RC D CLP CLR LG BEAR CAMP
RC D BARK NOTES 3/4in FRIENDLY

Вот несколько примеров того, что мне нужно:

RC D CLP CLR PNK TRTN SM
RC D CIRQUE S HRN CORAL XXS
RC D LEASH FOX 3/4inX6ft
RC D CLP CLR BEAR CAMP LG
RC D BARK NOTES FRIENDLY 3/4in

Я пока только вырезал и вставлял. Я думал о записи макросов для XS-XXL разных размеров, но не думаю, что это будет быстрее, поскольку я контролирую + v и вставляю размеры в конце после их вырезания.

1 Ответ

4 голосов
/ 01 мая 2019

Вот пользовательская функция, которая перебирает «слова» в поисках совпадений и перемещает их назад. Он использует Like, чтобы попытаться найти другие измерения по шаблону.

Вы можете добавить другие шаблоны / слова к Array, чтобы переместить их также.

Function MoveToBack(str As String) As String
    Dim ExArr() As Variant
    ExArr = Array("XXS", "XS", "SM", "M", "LG", "XL", "XX", "*#in*", "*#ft*")

    Dim strArr() As String
    strArr = Split(str)

    Dim last As String
    last = ""

    Dim temp As String
    temp = ""



    Dim strEach As Variant
    For Each strEach In strArr
        Dim hre As Boolean
        hre = False

        Dim i As Long
        For i = LBound(ExArr) To UBound(ExArr)
            If strEach Like ExArr(i) Then
                hre = True
                Exit For
            End If
        Next i

        If hre Then
            last = strEach
        Else
            temp = temp & strEach & " "
        End If
    Next strEach

    MoveToBack = Application.Trim(temp & last)

End Function

enter image description here

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