根据选择将数据复制到新添加的工作表

时间:2017-09-05 20:42:07

标签: excel vba excel-vba

我有以下代码,它根据另一个工作表中的一系列单元格添加新工作表。该代码最多可添加10个工作表,并在单元格中写入数据后将其命名。例如: 我可能在我的" VG-Class"中有以下数据:工作表:

细胞U2:1851-A3 ---------细胞U3:1736-A9 ------细胞U4:2171-A7

因此宏将创建3个新工作表,名称为1851-A3,1736-A9和2171-A7。这是我的代码:

Private CommandButton1_Click()
Dim lRow As Integer, i As Integer
Dim ws As Worksheet
Dim cel As Range
Dim numLines As Integer
i = 0
lRow = Worksheets("V-Class GC").Cells(Rows.Count, 10).End(xlUp).Row

For Each cel In Worksheets("V-Class GC").Range("U2:U" & lRow)
    If shtNameChk(cel.Value) = False Then
    Set ws = Worksheets.Add(After:=Worksheets(Worksheets.Count))
        ws.Name = cel.Value
    cel.Offset(0, -1).Hyperlinks.Add Anchor:=cel.Offset(0, -1), Address:="", _
    SubAddress:=ws.Name & "!A1", TextToDisplay:=cel.Offset(0, -2).Value & ", " & cel.Offset(0, -3).Value
    i = i + 1
    End If
Next
Worksheets("V-Class GC").Select
End Sub

我尝试做的是根据另一个名为"信息"的工作表中的数据填充这些新工作表中的每一个。新创建的工作表" 1851-A3"已将模型,包,参考和价格与包含更多代码的列表相关联。我将使用VLOOKUP查找并放置这些值。但是,我不知道如何在我的工作表的名称和此列表中的代码之间进行引用,以便宏可以找到并放置与每个代码/工作表名称相对应的信息。它就像一个报告生成器。

Look at this image if you want to see graphically what I mean:

提前非常感谢你!

1 个答案:

答案 0 :(得分:0)

将这些内容放在宏的顶部:

Dim wInfo As Worksheet
Dim x as Long
Set wInfo = Sheets("Information")

然后将此权利放在End If

之前
'check if model # is found in Col D of Information
If Application.CountIf(wInfo.Columns(4), ws.Name) Then

    'copy headers
    wInfo.Range("D1:H1").Copy ws.Range("D1")

    'look for matching model # and copy data if match
    For x = 1 To wInfo.Cells(wInfo.Rows.Count, 4).End(xlUp).Row
        If wInfo.Cells(x, 4).Value = ws.Name Then wInfo.Range("D" & x & ":" & "H" & x).Copy ws.Cells(Application.CountA(ws.Columns(4)) + 1, 4)
    Next x
End If

在您提供的示例数据中,看起来只有在D列和H列之间复制的信息,所以这就是我基于此答案的内容。它将信息表上的值D从D复制到新工作表上的D到H.