gpt4 book ai didi

vba - 使用 For...Next 循环写入取决于计数器的值

转载 作者:行者123 更新时间:2023-12-02 21:34:31 25 4
gpt4 key购买 nike

我想在 E 列中指定数量的单元格中写入“1”,然后在包含 1 的单元格正下方的相同数量的单元格中写入“2”,然后在其中写入“3”,依此类推,直到我在单元格中写入的值达到用户定义的变量。我认为我应该为此使用 For...Next 循环,但我不确定。我现在的代码是这样的:

    Dim k As Long
For k = 0 To observations
Range(Cells(2 + (k * patientprofiles), 5), Cells(1 + p * (k + 1), 5)).Value = k + 1
Next

其中observations是我想要在单元格中写入的值,patentprofiles是在移动到下一个值之前要填充的单元格数量。例如,如果observations为6,patentprofiles为40,我想在单元格E2:E41中写入1,在单元格E42:E81中写入2,在单元格E82:E121中写入3 ,单元格 E122:E161 中有 4 个,单元格 E162:E201 中有 5 个,单元格 E202:E241 中有 6 个。

我上面的代码在单元格 E1:E242 中写入 7,即,它在循环中移动时不会更改正在写入的值,并且它从 E1 开始并在 E242 中结束,而不是从 E2 开始并在 E242 中结束E241。

我对此有三个问题:

  1. 我认为应该使用 For...Next 循环来执行此操作是否正确?如果没有,我应该使用什么?

  2. 如果 For...Next 是正确的方法,我怎样才能让 VBA 在每个单元格中写入不同的值,而不是在所有单元格中写入相同的值?

  3. 为什么单元格的起始位置太高而单元格的结束位置太低?

感谢您的帮助,如果这是一个非常简单的问题或者是否已在其他地方得到解答,我深表歉意。

最佳答案

您希望将 .Resize() 方法与循环的 Step 参数结合使用:

Sub Foo()

Dim k As Long
Dim incrementValue As Long
Const observations As Long = 6
Const patientProfiles As Long = 40

incrementValue = 1

For k = 2 To observations * patientProfiles Step patientProfiles
Cells(k, 5).Resize(40, 1).Value = incrementValue
incrementValue = incrementValue + 1
Next

End Sub
<小时/>

Step 参数告诉循环以步骤递增,例如:

For i = 1 To 10           '// 1,2,3,4,5,6,7,8,9,10
For i = 1 To 10 Step 2 '// 1,3,5,7,9
For i = 1 To 10 Step 3 '// 1,4,7,10
<小时/>

Resize() 方法将范围对象的大小调整为给定的参数:

Range("A1")                '// 1R x 1C
Range("A1:B5") '// 5R x 2C
Range("A1").Resize(5, 2) '// 5R x 2C (Now "A1:B5")
Range("B5").Resize(9, 1) '// 9R x 1C (Now "B5:B13")

关于vba - 使用 For...Next 循环写入取决于计数器的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36455287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com