我正在清理一些数据。有人把产品的大小放在单元格的中间,当它应该在最后。这些尺寸范围从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在剪切后粘贴尺寸。
这是一个用户定义的函数,它迭代“单词”寻找匹配并将它们移动到后面。它使用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