使用VBA筛选出一列内容

我有一个列项目尺寸与产品名称混合在一起,如下所示:

A 47"HX 18"W Six-Light ChandW Three-Light Pendant 29"HX 38"WX 33"D Eight-Lt Chandelier 40"HX 32"W Four-Light Chand 43"HX 36"WX 29"D Three-Light Sconce 60"HX 50"W Eighteen-Light Chand ... // another 600 rows 

我试图用Magmi将它导入我们的商店。 我想从尺寸上分离产品名称。

问题是有些项目只有宽度/高度,没有深度,而其他(大多数)都有三个。 使用文本到列似乎没有足够的过滤这些数据,所以我假设我需要使用VBA。

作为VBA的新手,我不确定从哪里开始。 有没有人有想法/指针?

问题是有些项目只有宽度/高度,没有深度,而其他(大多数)都有三个。

逻辑:

find"它的位置,如果没有第三个"然后在第二个"之后寻找" ,如果有第三个" ,然后寻找一个空间。

假设你的数据看起来像这样

在这里输入图像说明

码:

这是你正在尝试?

 Option Explicit Sub Sample() Dim ws As Worksheet Dim Delim As String Dim Pos1 As Long, Pos2 As Long, Pos3 As Long Dim i As Long, lRow As Long '~~> This is " Delim = Chr(34) '~~> Set this to the relevant worksheet Set ws = ThisWorkbook.Sheets("Sheet1") With ws '~~> Find Last Row of Col A lRow = .Range("A" & .Rows.Count).End(xlUp).Row For i = 1 To lRow '~~> Get 1st position of " Pos1 = InStr(1, .Range("A" & i).Value, Delim) '~~> Get 2nd position of " Pos2 = InStr(Pos1 + 1, .Range("A" & i).Value, Delim) '~~> Get 3rd position of " Pos3 = InStr(Pos2 + 1, .Range("A" & i).Value, Delim) '~~> Check if 3rd " is present If Pos3 = 0 Then Pos1 = InStr(Pos2 + 1, .Range("A" & i).Value, " ") Else Pos1 = InStr(Pos3 + 1, .Range("A" & i).Value, " ") End If '~~> Extract relevant text into Col B .Range("B" & i).Value = Mid(.Range("A" & i).Value, Pos1 + 1) Next i End With End Sub 

输出:

在这里输入图像描述