我有一个循环遍历每列,并将该值设置为其上几行的R1C1总和。我正在使用for循环,但我想跳过几列,因为它们包含单元格中已有的公式。我怎样才能建立一个循环,只循环一个非连续的集合或数字?对于非连续范围的循环
作为参考,我希望它循环通过柱1〜80,但跳过COLS 25,36,37,44,60,63,64,67,68,73,75和76
编辑:谢谢你们,但我已经按照你所描述的那样工作了;我正在寻找一种更短,更优雅的方法。
编辑2:那就是VBA?!
我有一个循环遍历每列,并将该值设置为其上几行的R1C1总和。我正在使用for循环,但我想跳过几列,因为它们包含单元格中已有的公式。我怎样才能建立一个循环,只循环一个非连续的集合或数字?对于非连续范围的循环
作为参考,我希望它循环通过柱1〜80,但跳过COLS 25,36,37,44,60,63,64,67,68,73,75和76
编辑:谢谢你们,但我已经按照你所描述的那样工作了;我正在寻找一种更短,更优雅的方法。
编辑2:那就是VBA?!
一个VBA版本迭代列: -
Dim col As Integer: For col = 1 To 70
Select Case col
Case 25, 36, 37, 44, 60, 63, 64, 67, 68, 73, 75, 76
'do nothing'
Case Else
'do something'
End Select
Next col
我会做两件事之一。第一种是仅执行机构具体环数:
for i = 1 to 70
skipIt = false
skipIt = skipIt or (i = 25)
: : :
skipIt = skipIt or (i = 76)
if not skipIt then
' Put your body here. '
end if
next
或者,你可以直接跳到下一个:
for i = 1 to 70
if i = 25 goto nextIter
: : :
if i = 76 goto nextIter
' Put your body here. '
nextIter:
next
,你可以在你的循环的开头放一个,如果和跳过你不想通过学习的C#的答案
for i = 1 to 70
{
switch (i)
{
case 25, 36, 37, 44, 60, 63, 64, 67, 68, 73, 75 76 : break;
default : // process break;
}
}
您可以设置包含需要处理的列号的数组。
您的循环可以遍历数组值。
另一种解决方案是为每列定义一个值为布尔值的数组,并标记要跳过的列。在所有列的循环中检查布尔数组。
还有一种解决方案是,如果您可以在循环中检测列是否为需要跳过的列(通过检测那里的公式)。
该方法使用Excel的范围对象功能。
使用Excel的UNION方法定义范围,使其成为一系列非连续的列。
要加速循环,可以减小范围以仅包含使用范围对象的SpecialCells方法包含公式的单元格。
功能LoopColumns() 弱小目标作为范围 昏暗的小区范围
'创建列您想根据联盟的范围对象 设置目标=联盟(范围(‘A:d’) ,范围(“F:G”),范围(“J:L”),范围(“P:Q”))
'如果您只想处理公式,请再次减小范围,但要有 'Excel将范围定义为仅包含公式的单元格 设置目标=目标。SpecialCells(xlCellTypeFormulas,1)
For Each Cell In Target.Cells
'process cells here...
Next Cell
端功能
哪里是乔尔Spolsky的,当你需要他。 – 2009-03-02 10:07:54
谁说我们需要他? – Ikke 2009-03-02 10:32:43
我是唯一一个注意到Q'er想从1重复到70但跳过73,75和76的人? – paxdiablo 2009-03-02 11:52:07