excel 中for 語句問題,為什么我下面這段代碼只能執行到第7行,,后
我仔細檢查了你的程序,要使得該程序正常運行,必須滿足下面兩個條件。
條件1:
當cx=5時,單元格Cells(1, 5)“即sheet表中的cells(1,5)或第一行E列單元格是否為空值,如果是空值,程序直接跳出了for循環而結束了。
因此條件1是cells(1,5)不能是空。
提醒注意一點是:cells(i,j)表達的是第i行第j列的單元格,Excel2007最大的列數是16384,即j的值不能超過16384。
條件2:
如果Cells(1,5)或第一行E列單元格為非空值,但是在該段程序前是否定義了nf的初始值,如果沒有定義初始值,則對于For cx1 = 2 To nf + 1變成了For cx1 = 2 To 1,程序就不會執行該for語句下面的內容了,而直接結束For cx1語句。
因此無論cx等于何值,For cx1下面的語句都不會執行,實際運行結果是程序很快使得cx達到最大值1000而運行結束了,表面上看程序只能運行到第7行。
要使得程序正常運行,在for cx1語句前必須給出nf初始值(如nf=2)
只有同時滿足上述兩個條件,該程序才能正常運行。
由于對你的要求不是很清楚,如果從cells(1,5) (即從第5列)逐列開始,只要遇到一個單元格為空,該程序就結束運行。
如果想逐列檢查各單元格,只要是空值就跳過,而非空時執行下面的程序,這樣的話應該將 ElseIf Cells(1, cx) = "" Then Exit For語句刪除
如果還有疑問或不清楚的,可以再討論。
excel循環語句
把一個范圍中的數據一個個列到一起(中間用、隔開),忽略空單元格,兩兩相同的只取一個值。
不叫“忽略空單元格”,而是遇到 空單元格 就中止。
將代碼改為:
Function MyMacro1(Mydate As Range) As String
Dim tt As String, isFirst As Boolean
isFirst = True
For Each m In Mydate
If isFirst Then
isFirst = False
tt = *
MyMacro1 = tt
Else
If * = "" Then
Exit Function
ElseIf * <> tt Then
MyMacro1 = MyMacro1 &; "、" & *
End If
tt = *
End If
Next m
End Function
只需要在一個單元格中輸入:
=MyMacro1(B2:B11)
或 =MyMacro1(B:B)
GoodLuck!
excel如何實現FOR循環
你說的這個和mod()函數很像
比如mod(1000,25)
就會得到0,循環40次后得數為0
mod(1000,33)
會得到10,循環30次后得數為10
和我剛開始接觸excel一樣的疑問.當時剛從學校出來,學的是C,覺得excel沒有循環語句不好用,呵呵,后來才知道excel其實很強大.
Excel普通函數和公式不能實現for循環.
但是數組公式可以實現
比如
for(i=1,ij=j+i;
求1+2+3+。1000類似這樣的循環excel是可以做到的
=sum(row(1:1000)) ctrl+shift+enter 3鍵組合完成輸入
excel數組公式是強大的,你可以研究一下.
轉載請注明出處華閱文章網 » excelfor語句