我正在清理一些数据。有人将产品尺寸放在单元格的中间,而应该放在最后。这些尺寸范围从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在剪切后将其粘贴到末尾。
答案 0 :(得分:4)
这是一个用户定义的函数,该函数迭代“单词”以查找匹配项并将其移到后面。它使用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