2016-01-18 90 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 –

相关问题