繁体   English   中英

在不同工作表中按列循环遍历范围

[英]Looping through ranges by columns in different worksheets

我有一个宏,需要根据工作表“ NSA”中存在的列数进行循环(不计算日期),如下图所示:

在此处输入图片说明

遍历各列,宏需要用随机数填充工作表“ SA”中的相应范围,一次填充一列。

我想每次在“ NSA”中发生循环时都填充一列“ SA”,以在B:B和C:C中保留不同的数字。

因此,在第一次运行代码时,我只想在B列中插入数据,而第二次仅在C列中填充。

那就是我的代码失败的地方。 每次运行时,它总是同时填充工作表“ SA”中的B和C列。 这是我得到的(随机值): 在此处输入图片说明

根据“ NSA”中的循环,如何更改循环,以使“ SA”中的列一次仅更改一个?

谢谢您的帮助。

这是我的代码:

Sub Dessaz2()

Dim wb1 As Workbook
Set wb1 = ActiveWorkbook

Dim wsNSA As Worksheet
Set wsNSA = wb1.Worksheets("NSA")

Dim wsSA As Worksheet
Set wsSA = wb1.Worksheets("SA")

Dim col1 As Range
Dim col2 As Range

LR = wsNSA.Cells(3, 1).End(xlDown).Row
LC = wsNSA.Cells(3, 1).End(xlToRight).Column


For Each col1 In wsNSA.Range(Cells(3, 2), Cells(LR, LC)).Columns
wsNSA.Activate


wsSA.Activate

x = WorksheetFunction.RandBetween(0, 100)
wsSA.Range(Cells(3, 2), Cells(LR, LC)) = x

Next

End Sub

每次填充col1.column:

Sub Dessaz2()

Dim wb1 As Workbook
Set wb1 = ActiveWorkbook

Dim wsNSA As Worksheet
Set wsNSA = wb1.Worksheets("NSA")

Dim wsSA As Worksheet
Set wsSA = wb1.Worksheets("SA")

Dim col1 As Range
Dim col2 As Range

LR = wsNSA.Cells(3, 1).End(xlDown).Row
LC = wsNSA.Cells(3, 1).End(xlToRight).Column


For Each col1 In wsNSA.Range(wsNSA.Cells(3, 2), wsNSA.Cells(LR, LC)).Columns
wsNSA.Activate


wsSA.Activate

x = WorksheetFunction.RandBetween(0, 100)
wsSA.Range(wsSA.Cells(3, col1.Column), wsSA.Cells(LR, col1.Column)) = x

Next

End Sub
Sub Main()
    Dim rng as Range, cl as Range

    Set rng = worksheets("NSA").Range("B1:C100")  // update for your Range

    For each cl in rng
        Worksheets("SA").Range(cl.Address) = WorksheetFunction.RandBetween(0, 100)
    Next cl
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM