Excel VBA将细胞分成多个细胞

下午好,

我在学习VBA方面遇到很大的问题。 目前,我的数据是(如下)在一个结构,有时包含多个序列号属于一个单一的部分。

我有一个VBAmacros,我写这导入这些数据和格式适当的一个单独的程序。 但是,我正在研究一个可以让我浏览和分隔用逗号分隔的序列号的子程序。

例如: 宏观之前

但是,我希望它看起来像这样: 宏后

我发现这个网站上的一些代码( 拆分单元格到多行使用Vb代码 )已经帮助,但我遇到了麻烦:这是我有

Sub SplitSerial() Dim SN As String Dim i As Integer Dim numArray() SN = ActiveCell.Value numArray = Split(SN, " ") For LBound(numArray) To UBound(numArray) Cells(1, i + 1).Value = numArray(i) MsgBox numArray(i) Next i End Sub 

问题是,这个电子表格可能会有相当大的(5000 +)行,所以我不知道如何让它循环通过列,如果它有一个“,”拆分序列号,但复制从剩余的细胞。

任何指导,build议或指导将不胜感激。 我正在努力学习VBA。

试试这个,它使用数组,所以应该加快速度。 已经添加了一些注释来简要解释代码在做什么。

 Sub x() Dim v, vOut(), i As Long, j As Long, k As Long, w v = Sheet1.Range("A1").CurrentRegion.Value 'assumes starting data in A1 of sheet1 ReDim vOut(1 To UBound(v, 1) * 10, 1 To 3) 'output array, assumes no more than 10 serial numbers for each part For i = LBound(v, 1) To UBound(v, 1) w = Split(v(i, 2), ",") 'split serial number by comma For j = LBound(w) To UBound(w) 'for each serial number k = k + 1 vOut(k, 1) = v(i, 1) 'repeat part number vOut(k, 2) = w(j) 'add particular serial number vOut(k, 3) = v(i, 3) 'repeat price Next j Next i Sheet2.Range("A1").Resize(k, 3) = vOut 'output to A1 of sheet2. End Sub