附件中有样本文件。
代码如下
Sub 数据拆分()
Dim ary, i As Long, j As Integer, str As String, str1 As String
For i = 2 To [b65536].End(3).Row
str = VBA.Replace(Cells(i, "B"), ";", ";")
ary = Split(str, ";")
sj = Sheets(2).[c65536].End(3).Row + 1
Range("c" & i & ":I" & i).Copy Sheets(2).Cells(sj, "C").Resize(UBound(ary) + 1, 7)
For j = 0 To UBound(ary)
For k = 1 To Len(ary(j))
If IsNumeric(Mid(ary(j), k, 1)) Then
Sheets(2).Cells(Sheets(2).[a65536].End(3).Row + 1, "A") = Right(ary(j), Len(ary(j)) - k + 1)
Exit For
End If
Next k
Sheets(2).Cells(Sheets(2).[b65536].End(3).Row + 1, "B") = Application.Substitute(ary(j), "x" & Sheets(2).Cells(Sheets(2).[b65536].End(3).Row + 1, "A"), "")
Next j
Next i
End Sub
民间彩票爱好者,呵呵
有一个笨一点的办法供你参考:
如果最多是复制3行,那就让每一行数据下面都跟着三行复制出来的数据
在F列加一个给分号计数的函数,函数的值取0,1,2
A列为例:A2=A1
A3=IF(F1=1,A1,"")
A4=IF(F1=2,A1,"")
这样做完之后 在第一行加“自动筛选” 把空行删掉。
再去掉筛选就是你要的结果。