在单元格中获取文本的子部分
我在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
逻辑:
- 使用独特的分隔符。 我正在使用
SIDZ
。 - 用
" W
replace""
- 用
SIDZ
replace" H x
- 首先在
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)