【问题标题】:Excel Macro/VBA - Duplicate selected rows and adding repeating valueExcel 宏/VBA - 复制选定的行并添加重复值
【发布时间】:2019-04-11 18:36:47
【问题描述】:

我正在尝试自动化一些繁琐的工作任务,即复制选定的行,然后在每个行中添加一个额外的值,但我被困在后面的部分。

正如您在下面看到的,我可以复制我选择的行,但是当我去添加一个并发值时,偏移量不会对齐。

理想情况下,我会让它复制行,分配一个大小值,然后为每个大小重复该值,然后再转向新样式。

谁能指出我正确的方向?这是我所在的位置:

Dim i As Long

For i = (Selection.Row + Selection.Rows.Count - 1) To Selection.Row Step -1
    Rows(i).Copy
    Range(Rows(i + 1), Rows(i + 1)).Insert Shift:=xlDown

    Rows(i).Copy
    Range(Rows(i + 1), Rows(i + 1)).Insert Shift:=xlDown

    Rows(i).Copy
    Range(Rows(i + 1), Rows(i + 1)).Insert Shift:=xlDown

    Rows(i).Copy
    Range(Rows(i + 1), Rows(i + 1)).Insert Shift:=xlDown

    Rows(i).Copy
    Range(Rows(i + 1), Rows(i + 1)).Insert Shift:=xlDown


     ActiveCell.Offset(1, 2).Range("A1").Select
     ActiveCell.FormulaR1C1 = "X-small"
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "Small"
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "Medium"
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "Large"
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "X-large"
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveCell.FormulaR1C1 = "XX-Large"


Next i

End Sub

初始数据 Initial Data

当前结果:

期望的结果:

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你可以这样做。

    所以我使用 Array 函数来填充大小值,然后我们不需要任何虚拟列。

    VBA 代码:

    Sub RepeatRepeat()
    
    Dim myArrayVal()
    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim lrow As Long
    Dim lrow2 As Long
    
    myArrayVal() = Array("X-Small", "Small", "Medium", "Large", "X-Large", "XX-Large")
    
    lrow = Cells(Rows.Count, 1).End(xlUp).Row 'find last row in Column A
    
    j = 2
    For j = 2 To lrow
        lrow2 = Cells(Rows.Count, 9).End(xlUp).Row + 1 'Find last row in column I
        For k = LBound(myArrayVal) To UBound(myArrayVal) 'Loop Array
            Cells(lrow2, 9).Value = myArrayVal(k) 'Print Array value
            Cells(lrow2, 8).Value = Cells(j, 2).Value 'Copy from Column B to Column H
            Cells(lrow2, 7).Value = Cells(j, 1).Value 'Copy from Column B to Column H
            lrow2 = lrow2 + 1 'Add one to last row
        Next k
    Next j
    End Sub
    

    结果:

    【讨论】:

    • 抱歉,我对我希望完成的任务的解释不清楚。我刚刚编辑了我的问题,希望能更好地表达我的意图。我正在寻找的功能是能够在工作表中选择多行并推断/插入具有大小值的新行
    猜你喜欢
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2015-07-18
    • 2023-03-17
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多