Excel VBA - 在不同工作表中重复单元格范围

时间:2017-06-20 17:44:38

标签: excel vba excel-vba

我正在尝试复制包含名称的一系列单元格,例如:

UBBR1
UBBR2
UESR1
UESR2
UDCR1
UDCR2
SBBR1
SBBR2
SESR1
SPDCR1
SPDCR2
SADCR1
GCCS-M DBM
SADCR2
SPDCR3
SCIBBR1
SCIDCR1
SVTCR1 

这些单元格的范围存储在下面列出的名为mapping的变体中。另一张表单。这些名称重复的次数取决于另一个工作表中的行数。上面的每个名字都有一个在同一行的单元号,我存储在另一个名为ddg的变种中。存储在ddg中的单元号是指此工作簿中不同工作表的名称,其中存储了我正在使用的数据表。例如,下面的2表示"单元#2"这是一个有38行的表,所以UBBR1(Above)需要重复38次。

DDG:

2
2
61
64
11
14
4
4
61
16
14
16
42
18
19
9
20
51

代码:

ddg = ws.Range("E4:E21").Value
mapping = ws.Range("B4:B21").Value

For Each k In ddg
        m = "Unit #" & k
        lastN = Sheets("Test").Range("B50000").End(xlUp).Row + 1

    For Each i In mapping


       N = Cells(Sheets(m).Rows.count, 1).End(xlUp).Row

        For j = 1 To N


        Sheets("Test").Range("B" & lastN).Value = i

        Next j


    Next i

Next k

其中i是变体,映射也是包含包含名称的单元格范围的变体。 N是一个long,它获取重复的工作表的行数。我不确定我做错了什么但是循环没有重复这些值而是循环遍历映射中的所有内容,将其留在单元格中并一直向下执行。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

未经测试,但这样的事情应该有效

Sub Tester()

    Dim ddg, mapping, k As Long,  N As Long
    Dim unitNum, nm

    '...
    '...

    ddg = ws.Range("E4:E21").Value
    mapping = ws.Range("B4:B21").Value

    For k = 1 To UBound(ddg, 1)

        unitNum = ddg(k, 1)
        nm = mapping(k, 1)

        With Sheets("Unit #" & unitNum)
            N = .Cells(.Rows.Count, 1).End(xlUp).Row
        End With

        Debug.Print N & " rows for Unit# " & unitNum & " (" & nm & ")" '<<<

        Sheets("Test").Range("B50000").End(xlUp).Offset(1, 0) _
                                      .Resize(N, 1).Value = nm

    Next k


End Sub

您只需要一个循环,并且您可以一次性写入所有值。