2016-07-30 70 views
1

我需要将每行分割为2当第6列中的逗号分隔的值(多行)时。当单元格的值由逗号分隔时复制行

实施例(从2行):

A B C D E F G0 ,G1 
A* B* C* D* E* F* G0*,G1* 

变成:

A B C D E F G0 
A B C D E F G1 
A* B* C* D* E* F* G0* 
A* B* C* D* E* F* G1* 
+0

这是关于这个问题的后续:http://stackoverflow.com/questions/38674587/vba-error-not-enough-memory-for-the-operation – jony

+0

@ShaiRado我已经采用了正确的答案,但分裂没有完成。在那里你可以看到我的初始代码。 – jony

+0

在这个问题中,没有一个例子在第6列中显示逗号,也没有你希望结果看起来像逗号一样。再次,发布您尝试解决此问题的方法,以及您的数据和期望输出的示例。但是'text to columns'向导是分割这个的一种方法。请阅读[我如何提出一个好问题](http://stackoverflow.com/help/how-to-ask)以及[如何创建最小,完整和可验证示例]的帮助主题(http ://stackoverflow.com/help/mcve) –

回答

1

重新利用Split delimited 2nd and 3rd column data into new rows

Option Explicit 

Sub split_out() 
    Dim v As Long, vVALs As Variant, vSPLITs As Variant 
    Dim rw As Long, lr As Long, mx As Long 

    With Worksheets("Sheet4") 
     lr = .Cells(Rows.Count, 1).End(xlUp).Row 
     For rw = lr To 2 Step -1 
      vVALs = .Cells(rw, 1).Resize(1, 7).Value2 
      vSPLITs = Split(vVALs(1, 7), Chr(44)) 
      For v = UBound(vSPLITs) To LBound(vSPLITs) + 1 Step -1 
       .Rows(rw + 1).EntireRow.Insert 
       .Cells(rw + 1, 1).Resize(1, 6) = _ 
        Array(vVALs(1, 1), vVALs(1, 2), vVALs(1, 3), vVALs(1, 4), vVALs(1, 5), vVALs(1, 6)) 
       .Cells(rw + 1, 7) = Trim(vSPLITs(v)) 
      Next v 
      .Cells(rw, 7) = Trim(vSPLITs(v)) 
     Next rw 
    End With 

End Sub 

enter image description here
从这个...

enter image description here
......进入这个。

+0

我会虚心建议你停止你正在做的事情,并回顾过去几个小时内提供给你的例子。逐字逐行阅读代码,如果您不明白任何内容,请从您自己的研究开始。运行你不明白的代码(很简单)是蛮干的。 – Jeeped

+0

“.Cells(rw,7)= Trim(vSPLITs(v))”此行将引起下标超出范围错误 – jony

+0

可能在该行的G列中没有任何内容。插入一个if以确保v>> =零。 – Jeeped