【发布时间】:2016-04-07 00:32:58
【问题描述】:
我想在E列的指定数量的单元格中写“1”,然后在单元格正下方的相同数量的单元格中写“2”,其中有1,然后是“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 是我要写入单元格的值,patientprofiles 是在移动到下一个值之前要填充的单元格数。例如,如果observations 为 6,patientprofiles 为 40,我想在单元格 E2:E41 中写入 1,在单元格 E42:E81 中写入 2,在单元格 E82:E121 中写入 3,在单元格 E122:E161 中写入 4,在单元格 E122:E161 中写入 5,单元格 E162:E201 和单元格 E202:E241 中的 6。
我上面的代码是在单元格 E1:E242 中写入 7,也就是说,它不会改变它在循环中移动时写入的值,它从 E1 开始并在 E242 结束,而不是从 E2 开始并在 E242 结束E241.
我对此有三个问题:
我认为我应该使用 For...Next 循环来执行此操作是否正确?如果没有,我应该使用什么?
如果 For...Next 是正确的方法,如何让 VBA 在每个单元格中写入不同的值,而不是在所有单元格中写入相同的值?
为什么开始单元格太高而结束单元格太低?
感谢您的帮助,如果这是一个非常简单的问题或已在其他地方得到解答,我深表歉意。
【问题讨论】:
-
starting in E2因为Cells(2 + (k * patientprofiles)告诉它在k=0(循环开始)时从第2行开始。编辑:哦,等等,你确实希望它从E2开始... -
你在第二个
Cells中有p,应该是patientprofiles -
@ScottCraner 嗯,这是一个令人尴尬的错误!不过,谢谢,这有帮助;现在几乎可以工作了。唯一的问题是它在接下来的 40 个单元格(即 E242:E281)中写入了 k+1(在示例中为 7)。有没有办法让它在 E241 停止写入?
-
For k = 0 To observations - 1