在单元格中获取文本的子部分

我在Excel中有一个电子表格,每行一个产品,我想根据列中的文本来获取每个项目的高度和宽度。 我在A列中有尺寸文字:

8" H x 8" W 2.5" H x 3.5" W per side 8" H x 8" W 1 color left side 1" H x 3" W 

并希望将高度放在列(B)中,并将宽度放在列(C)中。 喜欢这个:

  (A) (B) (C) 8" H x 8" W 8 8 2.5" H x 3.5" W 2.5 3.5 per side 8" H x 8" W 8 8 1 color left side 1" H x 3" W 1 3 

我从这个片段开始,但我无法弄清楚如何获得所需的部分:

 Sub numberExtractor() Dim Cell As Integer For Cell = 2 To 449 If InStr(Cells(Cell, 17), """ H") > 0 Then Cells(Cell, 18).Value = Left(Cells(Cell, 17), InStr(Cells(Cell, 17), " ") - 1) End If If InStr(Cells(Cell, 17), """ W") > 0 Then Cells(Cell, 19).Value = Right(Cells(Cell, 17), InStr(Cells(Cell, 17), " ") + 2) End If Next Cell End Sub 

逻辑:

  1. 使用独特的分隔符。 我正在使用SIDZ
  2. " Wreplace""
  3. SIDZreplace" H x
  4. 首先在SPACE上分割,然后在独特的分隔符上分割

尝试这个。

 Option Explicit Sub Sample() Dim rng As Range, aCell As Range Dim Ar Dim Ht As Double, Wt As Double Dim sTemp As String, sDelim As String Dim i As Long sDelim = "SIDZ" Set rng = Range("A1:A4") For Each aCell In rng sTemp = aCell.Value sTemp = Replace(Replace(sTemp, """ W ", ""), """ H x ", sDelim) Ar = Split(sTemp) For i = LBound(Ar) To UBound(Ar) If Ar(i) Like "*" & sDelim & "*" Then aCell.Offset(, 1).Value = Split(Ar(i), sDelim)(0) aCell.Offset(, 2).Value = Split(Ar(i), sDelim)(1) End If Next i Next aCell End Sub 

在这里输入图像说明

随着公式,被复制下来,以适应:

在B1:

 =IF(FIND(" H",SUBSTITUTE(A1,"""",""))>4,MID(SUBSTITUTE(A1,"""",""),FIND(" ",SUBSTITUTE(A1,"""",""),FIND(" H",SUBSTITUTE(A1,"""",""))-4)+1,FIND(" ",SUBSTITUTE(A1,"""",""),FIND(" ",SUBSTITUTE(A1,"""",""),FIND(" H",SUBSTITUTE(A1,"""",""))-4)+1)-FIND(" ",SUBSTITUTE(A1,"""",""),FIND(" H",SUBSTITUTE(A1,"""",""))-4)),LEFT(SUBSTITUTE(A1,"""",""),FIND(" ",SUBSTITUTE(A1,"""","")))) 

在C1中:

 =RIGHT(SUBSTITUTE(SUBSTITUTE(A1,"""","")," W",""),LEN(SUBSTITUTE(SUBSTITUTE(A1,"""","")," W",""))-FIND(" x ",SUBSTITUTE(SUBSTITUTE(A1,"""","")," W",""))-2) 

照片由@Siddharth Rout提供