下午好,
我在学习 VBA 的过程中遇到了一个大问题。目前,我的数据(如下)在一个结构中,有时包含属于单个零件的多个序列号。
我有一个我编写的 VBA 宏,它导入这些数据并为单独的程序适当地格式化它。但是,我正在开发一个子程序,它可以让我通过并分隔这些由逗号分隔的序列号。
我在这个网站上找到了一些代码(使用 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
问题是,这个电子表格可以得到非常大(5,000+)行,所以我不知道如何让它循环遍历列,如果它有一个“,”,拆分序列号但复制值剩余的细胞。
任何指导、建议或指导将不胜感激。我正在非常努力地学习 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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句