簡體   English   中英

Excel VBA-在不同工作表中重復單元格范圍

[英]Excel VBA - Repeating Cell Range in different sheet

我正在嘗試復制包含名稱的一系列單元格,例如:

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

這些單元格的范圍存儲在下面稱為映射的變量中。 這些名稱重復的次數取決於另一張工作表中的行數。 上面的每個名稱在同一行中都有一個單位號,我將其存儲在另一個名為ddg的變體中。 ddg中存儲的單元號是指此工作簿中存儲我正在使用的數據表的不同工作表的名稱。 例如,下面的2表示“ Unit#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是一個很長的字符,它可以獲取重復的工作表行數。 我不確定自己在做什么錯,但是循環不會重復這些值,而是循環遍歷映射中的所有內容,將其保留在單元格中,並一直向下執行。 任何幫助將不勝感激。

未經測試,但類似的東西應該可以工作

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

您只需要一個循環,就可以一次寫入所有值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM