Excel宏 - 如何根据特定单元格值复制/拆分行

时间:2011-03-24 18:16:25

标签: excel vba excel-vba

我正在处理一个巨大的电子表格,需要一些我想为它编写的特定宏的帮助。

我有一大堆关于什么设备在哪个房间里的信息。每个房间都有自己的行,用于安装的设备类型。有时,一个房间有多个相同的设备,并在数量列中指定。我需要拆分/复制这些行,以便每个设备都有自己的行。

我目前的情况:

 A              B            C
 Equip. Name    Rm Number    Quantity
 xxxxx          1.2.3.4      5
 yyyyy          1.2.3.4      1

我需要宏为我做什么:查找并将数量大于1的所有行复制到与数量值相同的次数下面的以下行中,并将整个电子表格的数量全部替换为1。

 A              B            C
 Equip. Name    Rm Number    Quantity
 xxxxx          1.2.3.4      1
 xxxxx          1.2.3.4      1
 xxxxx          1.2.3.4      1
 xxxxx          1.2.3.4      1
 xxxxx          1.2.3.4      1
 yyyyy          1.2.3.4      1     

提前谢谢。

1 个答案:

答案 0 :(得分:3)

要扩展适当的行,附加的宏将遵循以下模式:

  • 从最后一行开始循环数据
  • 如果数量> 1,
  • 插入行以腾出空间
  • 复制行数据
  • 将数量设为1

Sub ExpandRows()
    Dim dat As Variant
    Dim i As Long
    Dim rw As Range
    Dim rng As Range

    Set rng = ActiveSheet.UsedRange
    dat = rng

    ' Loop thru your data, starting at the last row 
    For i = UBound(dat, 1) To 2 Step -1
        ' If Quantity > 1
        If dat(i, 3) > 1 Then
            ' Insert rows to make space
            Set rw = rng.Rows(i).EntireRow
            rw.Offset(1, 0).Resize(dat(i, 3) - 1).Insert
            ' copy row data down
            rw.Copy rw.Offset(1, 0).Resize(dat(i, 3) - 1)
            ' set Quantity to 1
            rw.Cells(1, 3).Resize(dat(i, 3), 1) = 1
        End If
    Next
End Sub