2014-09-10 60 views
1

我在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 

回答

2

邏輯:

  1. 使用唯一的分隔符。我正在使用SIDZ
  2. 更換" W通過""
  3. SPACE通過SIDZ
  4. 先拆更換" H x,然後在獨特的分隔符

試試這個。

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 

enter image description here

+1

它運行良好,我從你的例子中學到了很多東西。非常感謝你 ! – Tdev 2014-09-10 15:29:52

1

隨着公式,被向下複製到花色:

在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) 

Photo courtesy @Siddharth Rout

+0

在我的情況下,我更喜歡宏觀方式,但在某些情況下有足夠的公式是很好的☺謝謝! – Tdev 2014-09-12 11:46:58

+0

充分理解。如果沒有VBA(也可能是捏住@ Sid圖片副本的藉口),這可能更有趣一點 - 儘管偶爾不允許使用宏,所以有一天可能會對某人感興趣。 :-) – pnuts 2014-09-12 11:54:16

相關問題