问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求一段VBA语言可以将一个单元格的内容分成多行记录

发布网友 发布时间:2023-06-17 04:44

我来回答

3个回答

热心网友 时间:2024-03-17 11:17

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。 浏览器访问服务器上的问卷,宣布做完的瞬间,随时可以看统计图表。

热心网友 时间:2024-03-17 11:17

你好,此问题可以通过Excel VBA完美解决。详见 简书的文章《用ExcelVBA实现自动拆分单元格中的内容到多行中》网页链接。全部VBA代码如下,复制粘贴到你的Excel中就可以。

Sub ChaiFenDanYuanGe()'声明变量
Dim arr() As String '定义一个字符串数组,用来存放单元格拆分后的数据
Dim m%              '定义一个整数,用来记录单元格内容需拆分的总行数
Dim n%              '定义一个整数,用来记录要拆分单元格的总个数
Dim row1, col1      '记录所选单元格所在的行数 和 列数
Dim i%, j%          '循环计数变量
Dim max%            '记录最大整数

'第1步,把拆分的数据存放到数组arr里    '第1.1步,确定要拆多少行,即确定m的值
        '第1.1.1步,选择区域有几列?也就是要拆分的单元格的总个数,即n的值        '注意:我们选择的区域都是1行1列 或 1行多列
        n = Selection.Count
    If n = 1 Then   '如果选择区域仅有一个单元格,那么...
        m = UBound(VBA.Split(Selection.Cells(1, n), Chr(10)))    Else            '如果选择区域不止一个单元格,那么通过比较,确定出选中区域,单元格能拆分的最多行数
        m = UBound(VBA.Split(Selection.Cells(1, 1), Chr(10)))
        For i = 2 To n
            max = UBound(VBA.Split(Selection.Cells(1, i), Chr(10)))
            If max > m Then
                m = max
            End If
        Next i
    End If
    
    '第1.2步,存数据到数组,    'split分隔符是chr(10),也就是单元格里的alt+enter这种回车
    '如果要用其他的分隔符,如用分号分隔,则直接split(单元格,";")即可
    ReDim arr((n - 1), m) '数组arr()是m+1行,n列
    For i = 0 To (n - 1)
        '获取单元格split后的字符串个数,防止下标j越界
        max = UBound(Application.Transpose(Application.Transpose(VBA.Split(Selection.Cells(1, i + 1), Chr(10))))) - 1
        For j = 0 To m            If j <= max Then
                arr(i, j) = Application.Transpose(Application.Transpose(VBA.Split(Selection.Cells(1, i + 1), Chr(10))))(j + 1)
            End If
        Next j
    Next i'第2步,在所选区域上方,插入m行,并且复制所选区域的内容
    '第2.1步,获取activecell所在的行数,selection第一个单元格的列数
    row1 = ActiveCell.Row
    col1 = Selection.Cells(1, 1).Column    '第2.2步,插入m行
    For i = 1 To m
        Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Next i
    '第2.3步,复制行
    Cells(row1 + m, 1).EntireRow.Copy
    Range(Cells(row1, 1), Cells(row1 + m - 1, 1)).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False'第3步,将数组arr中的数据覆盖拆分区域
For i = 0 To n - 1
    For j = 0 To m
        Cells(row1 + j, col1 + i) = arr(i, j)
    Next j
Next i
'大功告成,将焦点放在A1单元格
Cells(1, 1).Select
End Sub

热心网友 时间:2024-03-17 11:18

用函数行否?追问因为我处理的数据比较多而且杂乱,用VBA会比较好一点,不过也谢谢你提出这个建议。不知道能用什么函数呢?

追答

需要用辅助列实现,权当交流学习下!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
菏泽中考成绩分数线什么时候出? 耐电压击穿仪耐电压击穿仪 介电击穿强度试验仪主要用途及功能 电压击穿控制及调压方式 电压击穿试验仪主要适用范围及功能 五个可以装一盘,装了6盘。如果10个装一盘可以装几盘? 500个苹果16个一箱,可以装几箱,还省几个?怎么算 一个袋子最多能装8个苹果,现在有59个苹果,能全部装进8个袋子中吗? 55个苹果每10个一箱可以装几箱 大连市有几个嘉汇学校 女人梦见针扎手但是没流血 梦见手指被针扎破没流血的预兆 101教育PPT怎样导入学生 怎样制作音乐相册视频软件? ...空间老是出现相册 都不知道怎么了 有设备锁 修改多少次密码 还是这 ... 情人节甜蜜暖心祝福语大全 情人节浪漫的祝福语五篇 一生一世美人骨,前世因,后世果 电视剧里什么经典的剧情让你过目不忘? 201不锈钢板拈动物油会生锈吗 201不锈钢能做汽油桶吗 201不锈钢和汽油在一起会腐蚀吗? 荒野独居米奇还活着吗 支票的种类有哪几种,适用范围有哪些 转账支票的用途有哪些? 嘉兴河山柳岸春风是哪个开发商? 许村柳岸春风房子怎么样 许村镇地铁站有哪些排屋别墅合院 嘉兴绿城华景川柳岸春风是哪个开发商? 嘉兴绿城华景川柳岸春风产权年限多少年? 家装瓷砖如何选购? 家装瓷砖怎么选择 装修怎么挑选瓷砖(如何选好瓷砖) 微鲸投影仪怎么维修 下列各项中,不属于系统自动控制以及信息技术应用控制审计关注点的是... 飞机自动报告系统可以发送几种报告 宁夏二建考试合格分数线 2015宁夏二级建造师报名入口网址是什么?该注意什么? 梦9队阵容名单 世锦赛美国梦九队队员名单 求北京最全KEEN店面地址 白萝卜煮多久才能熟透? 莫名的伤感想哭的句子 荣耀手机更新系统后自动删除软件? 一个银行账户最多可以签多少手机号? 如何用安卓手机开安卓手机里面的画面 刺客信条奥德赛选男还是女奥德赛选男还是女区别奥德赛选女主会怀孕... 刺客信条卡珊德拉是刺客大师吗 刺客信条奥德赛天下无不散选谁 刺客信条奥德赛我不属于这里任务 我不属于这里任务攻略