Sub splitting()
startRow = 3 '已知你的表里面待拆分数据是从第三行开始的。
endrow = ActiveSheet.Range("A65535").End(xlUp).Row 'A列从第65535行开始倒数,直到不为空(这样找出A列最下一行有数据的)
i = startRow
rowx = 1
Do While i <= endrow 'A列从第三行开始用循环遍历
nameQty = UBound(Split(Cells(i, 2), ";", , vbTextCompare)) + 1 '以分号作为拆分符,拆当前行的第二列,得到拆出的字段数
For j = 1 To nameQty '遍历拆出来的字段
Cells(rowx + 2, 5).Value = Split(Cells(i, 2), ";", , vbTextCompare)(j - 1)
Cells(rowx + 2, 4).Value = Cells(i, 1).Value
rowx = rowx + 1
Next
rowx = rowx - 1
i = i + 1
Loop
End Sub
其实我在查到一条差不多的vba,可不可以在这个的版本上面添加一下?
循环是一样的,只是我用了do loop 和for next两种。
里面取值我用了变量,他是逐条写,所以他的看起来行数多些。
拆分的最后一列,因为例题不同,先前你给的有分号,必须用split,后来你给的是选择题1234,不存在12,34这样的可能,所以没有间隔符号,可以直接用left ,right, mid取数。
怎么改都行的,其他没有技术差异了。
如果你是在做问卷调查的话,用excel太罗嗦了。我有更好的online survey。 浏览器访问服务器上的问卷,宣布做完的瞬间,随时可以看统计图表。
你好,此问题可以通过Excel VBA完美解决。详见 简书的文章《用ExcelVBA实现自动拆分单元格中的内容到多行中》网页链接。全部VBA代码如下,复制粘贴到你的Excel中就可以。
Sub ChaiFenDanYuanGe()'声明变量因为我处理的数据比较多而且杂乱,用VBA会比较好一点,不过也谢谢你提出这个建议。不知道能用什么函数呢?
追答需要用辅助列实现,权当交流学习下!