我有一個循環遍歷每列,並將該值設置爲其上幾行的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