通过标签值(Excel VBA)将逗号分隔的单元格转换为多行

列A包含标签或结果值,列BN包含不同长度的逗号分隔值,但每列的范围相同(即1-64)。 目标是转换为一个新的表格,列A代表值范围(1-64),列BN表示原始表格的标签/结果。

例

在这里寻找一个半相关的解决scheme,但不使用macros。

试试这个代码。

Sub test() Dim vDB, vR() Dim vSplit, v As Variant Dim Ws As Worksheet Dim i As Long, n As Long, j As Integer, c As Integer vDB = Range("a2").CurrentRegion n = UBound(vDB, 1) c = UBound(vDB, 2) ReDim vR(1 To 64, 1 To c) For i = 1 To 64 vR(i, 1) = i Next i For i = 2 To n For j = 2 To c vSplit = Split(vDB(i, j), ",") For Each v In vSplit vR(v, j) = vDB(i, 1) Next v Next j Next i Set Ws = Sheets.Add '<~~ replace your sheet : Sheets(2) With Ws For i = 1 To c .Range("b1")(1, i) = "COND" & i Next i .Range("a2").Resize(64, c) = vR End With End Sub 

我会让你修改这个代码,

 Sub splitThem() Dim i As Long, j As Long, k As Long, x As Long x = 1 Sheets.Add.Name = "newsheet" For j = 2 To Cells(1, Columns.Count).End(xlToLeft).Column For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row If Cells(i, j) <> "" Then For k = 1 To Len(Cells(i, j)) - Len(Replace(Cells(i, j), ",", "")) + 1 Sheets("newsheet").Cells(x, j) = Cells(i, 1) x = x + 1 Next k End If Next i x = 1 Next j End Sub 

在这里输入图像说明