2016-01-18 91 views
1

我想分割單元格,如果包含「,」到下一行我使用此公式從sheet1(= Sheet1!B3)等獲取數據,數據是在B3 :AF50。 我使用VBA代碼分割單元格與公式在下一行Excel vba

Sub splitcells() 
Dim InxSplit As Long 
Dim SplitCell() As String 
Dim RowCrnt As Long 

With Worksheets("Sheet2") 

RowCrnt = 3 

Do While True 


    If .Cells(RowCrnt, "b").Value = "" Then 
    Exit Do 
    End If 

    SplitCell = Split(.Cells(RowCrnt, "b").Value, ",") 

    If UBound(SplitCell) > 0 Then 

    .Cells(RowCrnt, "b").Value = SplitCell(0) 


    For InxSplit = 1 To UBound(SplitCell) 
     RowCrnt = RowCrnt + 1 

     .Cells(RowCrnt, "b").Value = SplitCell(InxSplit) 

     .Cells(RowCrnt, "B").Value = .Cells(RowCrnt - 1, "B").Value 
    Next 
    End If 

    RowCrnt = RowCrnt + 1 

    Loop 

End With 

End Sub 

問題是

  • 我不知道怎麼給範圍(B3:Af50)在此代碼
  • 此代碼是不是讓我的代碼(=工作表Sheet1!)
  • 它只是複製之前的值 「」

我的單元格的值都是這樣

B3 ABC,XYZ,KKK,LLL 我希望它分割爲B3 = ABC和B4 = XYZ B5 = KKK B6 = LLL

並且如果B3值被改變它應該清除細胞(B4 ,B5,B6)早期分裂和更新,如果分裂要求的標準 「」

有無片那樣

enter image description here

分裂後

應該看起來與式完好

enter image description here

回答

3

不需要VBA。

隨着數據在Sheet 1中細胞B3,把這個在任何片的任何細胞:

=TRIM(MID(SUBSTITUTE(Sheet1!$B3,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999)) 

和複製對面。

enter image description here

EDIT#1:

要複製向下,使用此公式來代替:

=TRIM(MID(SUBSTITUTE(Sheet1!B$3,",",REPT(" ",999)),ROWS($1:1)*999-998,999)) 
+0

它被分裂成列,並且還如果在表值1是改變它不更新表2 –

+0

@MuhammadKhurrumButt請參閱我的**編輯#1:** –

+0

編輯#1工作良好,但只有前4行不coverin g全系列B3:AF50 –

相關問題