VBA编程二--以某个标识拆分某列数据

 注:本章所有VBA只是都围绕下述代码展开

' 单引号后面为注释

代码运行请参考文章  VBA编程一

VBA编程一--WPS如何编辑VBA代码--工具使用--环境准备_wps vba-CSDN博客

Sub 拆分B列()
    '以","拆分
    Dim i, arr, ir, k
    Dim m As Long
    Dim n As Long
    
    '获取工作表1中A列最后一行有数据的行号
    ir = Sheets(1).Range("a65536").End(xlUp).Row
    
    '从最后一行开始,向上循环到第2行
    For i = ir To 2 Step -1
        '检查B列单元格中是否包含逗号
        If InStr(Cells(i, "B"), ",") Then
            '将B列单元格的值按逗号拆分成数组
            arr = Split(Cells(i, "B").Value, ",")
            
            '从数组的最后一个元素开始,向前循环到第一个元素
            For k = UBound(arr) To LBound(arr) Step -1
                '如果当前元素是数组的第一个元素
                If k = 0 Then
                    '在当前行的下方插入一行
                    Cells(i, "B").Offset(1, 0).EntireRow.Insert xlShiftDown
                    
                    '将当前行的A列值复制到新插入的行的A列
                    Cells(i, 1).Copy
                    Cells(i + 1, 1).PasteSpecial Paste:=xlPasteValues
                    
                    '将当前行的第3到6列的值复制到新插入的行的对应列
                    For m = 3 To 6
                        Cells(i, m).Copy
                        Cells(i + 1, m).PasteSpecial Paste:=xlPasteValues
                    Next m
                    
                    '将数组中的第一个元素赋值给新插入行的B列
                    Cells(i, "B").Offset(1, 0).Value = arr(k)
                Else
                    '在当前行的下方插入一行
                    Cells(i, "B").Offset(1, 0).EntireRow.Insert xlShiftDown
                    
                    '将当前行的A列值复制到新插入的行的A列
                    Cells(i, 1).Copy
                    Cells(i + 1, 1).PasteSpecial Paste:=xlPasteValues
                    
                    '将当前行的第3列的值复制到新插入的行的第3列
                    Cells(i, 3).Copy
                    Cells(i + 1, 3).PasteSpecial Paste:=xlPasteValues
                    
                    '将数组中的当前元素赋值给新插入行的B列
                    Cells(i, "B").Offset(1, 0).Value = arr(k)
                End If
            Next k
            
            '删除当前行(因为已经将内容拆分到新行)
            Cells(i, "B").EntireRow.Delete
        End If
    Next i
End Sub

VBA代码实现的功能 

1、实现了对B列数据以","逗号拆分为多行数据

2、对前三列的数据进行复制填充

3、后几列的数据只填充一行

4、删除拆分数据所在行

思路

打开excel宏文件  打开VB编辑器

wps即可满足前置条件

编程思路

从最后一行往上循环  避免行号改变导致循环错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值