Excel 根据另一个表中某列中的值向表中插入特定数量的行

Excel 根据另一个表中某列中的值向表中插入特定数量的行,excel,vba,Excel,Vba,当涉及excel VBA时,我有点没用。我有一个问题需要解决,我在excel中的两个工作表上有两个表 活页1上的表1与所附图片类似 我需要实现的是复制表1中前4列的值,并在表2中以x的次数将其粘贴到表2中。x由表1中计数列中的相应值定义 表单2上的结果表2应类似于以下内容:附图片 如果有人能告诉我如何用vba宏实现这一点,我将不胜感激 非常感谢 -shawn学习如何创建宏的最佳方法是使用录制宏功能。它将生成您在工作簿中执行的操作的代码,但是,在这种情况下,您需要循环,因此它更复杂 下面的代码将实

当涉及excel VBA时,我有点没用。我有一个问题需要解决,我在excel中的两个工作表上有两个表

活页1上的表1与所附图片类似

我需要实现的是复制表1中前4列的值,并在表2中以x的次数将其粘贴到表2中。x由表1中计数列中的相应值定义

表单2上的结果表2应类似于以下内容:附图片

如果有人能告诉我如何用vba宏实现这一点,我将不胜感激

非常感谢


-shawn

学习如何创建宏的最佳方法是使用录制宏功能。它将生成您在工作簿中执行的操作的代码,但是,在这种情况下,您需要循环,因此它更复杂

下面的代码将实现您正在寻找的功能。我添加了注释来解释每一行的作用

Sub copyRow()

Application.ScreenUpdating = False                      'Turn off ScreenUpdating so you won't see all the
                                                        'actions happen in real time

    Dim count As Integer                                'Declare variables
    Dim lastRow1 As Integer, lastRow2 As Integer
    Dim ws1 As Worksheet, ws2 As Worksheet

    Set ws1 = Worksheets("Sheet1")                      'Set worksheet values
    Set ws2 = Worksheets("Sheet2")

    ws1.Activate                                        'Sheet1 needs to be active to perform next step
    lastRow1 = ws1.Range("A50").End(xlUp).row           'Identify last row in table to know data size

    For i = 2 To lastRow1                               'For the number of rows in table, perform the following
        count = ws1.Range("F" & i).Value                'Set 'count' variable, number of times to paste row
        ws1.Activate                                    'Sheet2 needs to be active to perform next step
        ws1.Range(Range("A" & i), Range("D" & i)).Copy  'Copy data you want to transfer

        ws2.Activate
        lastRow2 = ws2.Range("A50").End(xlUp).row       'Identify last row in table
        lastRow2 = lastRow2 + 1                         'Want to paste data to NEXT row

        For j = lastRow2 To lastRow2 + count - 1        'Paste the data the number of times indicated
            ws2.Range("A" & j).PasteSpecial
        Next j
    Next i

Application.ScreenUpdating = True                       'Turn back on ScreenUpdating to see updated sheet

End Sub

到目前为止你试过什么?张贴代码以显示错误所在。