首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据更改之间插入5行,复制一列&将文本字符串添加到另一列

在数据更改之间插入5行,复制一列&将文本字符串添加到另一列
EN

Stack Overflow用户
提问于 2022-04-21 14:10:22
回答 1查看 50关注 0票数 2

我对VBA一无所知,但我想知道我是否能让它做一些我手动做的事情。

我有一些主题数据。列有姓名、姓氏、教职员工、兄弟姐妹、班级、学校、行政。通常,"Class“列中有多个具有相同数据的行。每次"Class“列中的数据发生更改时,我都需要插入5行,将"class”从上面的单元格复制到这5行,并将单词"zzBLANK“添加到姓氏列。

我使用的一些示例数据:

最终的结果应该是这样:

这是可行的,谁能帮上忙吗?我设法找到了一些代码,其中在E列的数据更改之间添加了5行,但无法找到如何将数据添加到这些行中。或者,至少我无法理解其他代码,并将其更改为我的需要。

代码语言:javascript
复制
Sub DoubleRowAdder()

Dim i As Long, col As Long, lastRow As Long

col = 5
lastRow = Cells(Rows.Count, col).End(xlUp).Row

For i = lastRow To 2 Step -1
If Cells(i - 1, col) <> Cells(i, col) Then
Range(Cells(i, col).EntireRow, Cells(i + 4, col).EntireRow).Insert shift:=xlDown
End If
Next i

End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-21 14:37:05

您只需按照添加行的方式进行,而不需要EntireRow和所需的列:

代码语言:javascript
复制
Option Explicit

Public Sub DoubleRowAdder()
    Const col As Long = 5
    Const AddRows As Long = 5
    
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, col).End(xlUp).Row
    
    Dim i As Long
    For i = lastRow To 2 Step -1
        If Cells(i - 1, col) <> Cells(i, col) Then
            'add rows
            Range(Cells(i, col).EntireRow, Cells(i + AddRows - 1, col).EntireRow).Insert shift:=xlDown
            
            'fill column 5 in those rows with value above
            Range(Cells(i, col), Cells(i + AddRows - 1, col)).Value = Cells(i - 1, col).Value
            
            'fill column 2 in those rows with zzBLANK
            Range(Cells(i, 2), Cells(i + AddRows - 1, 2)).Value = "zzBLANK"
        End If
    Next i
End Sub
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71955927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档