yosi 發問時間: 電腦與網際網路軟體 · 1 0 年前

Excel 條件如何影響篩選結果

請教各界大師照過來,下列條件語法作如何解釋,為什麼篩選結果會不一樣。

1. If X Mod 5 = 0 Or Not Range("AC" & X + 7) = "OK" Then

If X Mod 5 = 0 Then

X1 = X / 5

Else

X1 = Int(X / 5) + 1

End If

Range("AI23") = y - 1 '記錄新增工作表數

2. If X Mod 5 = 0 Or Not Range("AC" & X + 7) = "OK" Then

X1 = X / 5

Else

X1 = Int(X / 5) + 1

End If

Range("AI23") = y - 1 '記錄新增工作表數

例2.少 If X Mod 5 = 0 Then這句,篩選正確,但不會繼續執行第二列以下。

例1.多If X Mod 5 = 0 Then這句,篩選結果都不正確,但會繼續執行空架子。

請各位高手多費心了,謝謝大家!

已更新項目:

pop大師您好

試過還是沒解決,巨集裏有一句,不知是有關係;

x = x + 1

Do While Range("AC" & x + 6) = "OK" '直到不OK

就是此句只執行一個"OK"就停止(S7:Y7),不繼續執行第二.三...個"OK"(S8:Y8),(S9:Y9)...,謝謝幫忙。

2 個已更新項目:

pop你好

對不起,上回好像有提過,卻沒有登出。

巨集裏有下列 語法

x = x + 1 '開始產生執行x次

Do While Range("AC" & x + 6) = "OK" '直到不OK

If x Mod 5 = 1 Then

y = 1 '新檔

NewName = mydir & "HK49Bp2" & Int(x / 5) + 1 & ".xls"

3 個已更新項目:

下列有程式的全部與說明請下載:

http://www.funp.net/942596

4 個已更新項目:

For x = 7 To [AC65536].End(xlUp).Row

x = 1

If x Mod 5 = 1 Then

y = 1 '

改成上面後,依舊只執行一列(7個碼)並出現同檔名不能存檔而中斷。

拜託再診視看看,謝謝了。

5 個已更新項目:

用 For v = 7 To [AC65536].End(xlUp).Row

x = x + 1

執行後1.有列數順序不對。2.也有一列抓到資料,其他只有空架構。

6 個已更新項目:

Daniel你好

不要執行,因為條件填入不完整。

7 個已更新項目:

Daniel & 各位大師們 , 你們好!

本題還有後續的精彩內容須再請教,盼各位能多多指導。

4 個解答

評分
  • Daniel
    Lv 7
    1 0 年前
    最佳解答

    請問版大, 若中間有個為X,

    例如第3個OK, 第4個為X, 那要再執行第5個嗎?

    2009-07-24 11:42:55 補充:

    上面那段改為這樣:

    X = 1 '開始產生執行x次

    While Range("AC" & X + 6) = "OK" '直到不OK

    If X Mod 5 = 1 Then

    y = 0 '新檔

    X1 = Int(X / 5) + 1

    NewName = "HK49Bp2" & X1 & ".xls"

    ................

    Wend

    用 WHILE.....WEND 判斷到不 OK就停止

    X1的值只要一行就可以了, 不需要去判斷什麼

    而 If X Mod 5 = 0 Then 這句應要用在執行附程式之前用

    2009-07-27 01:44:14 補充:

    Wnd 改為 Wend

    即然等於OK才執行, 又要不等於時跳出對話方塊, 上述結果是予盾的

    建議改為:

    While Range("AC" & X +1) = "OK" '直到不OK

    ......

    Wend

    If Range("AC" & X +1)<>"OK" Then MSGBOX X

  • 1 0 年前

    Daniel大大好:

    請教______

    在A1~A10有資料 OK 與 XX

    X = 1 '開始產生執行x次

    While Range("AC" & X +1) = "OK" '直到不OK

    If Range("AC" & X +1)<>"OK" Then MSGBOX X

    Wnd

    無法執行??

  • pop
    Lv 7
    1 0 年前

    版主好:

    1)條件 是 X Mod 5 = 0 或 Not Range("AC" & X + 7) = "OK"

    二者只要一個為真_就執行

    上述已經是二個範圍的條件_又使用下句_將範圍限制成1個

    If X Mod 5 = 0 Then

    當然 _無法執行_Not Range("AC" & X + 7) = "OK"

    2. If X Mod 5 = 0 Or Not Range("AC" & X + 7) = "OK" Then

    If X Mod 5 = 0 Then 沒有此句__就是只要二者取1即停止

    3_試試下列

    If X Mod 5 = 0 Then'符合第一條件

    ........

    Else'不符合第一條件

    If Not Range("AC" & X + 7) = "OK" Then'第二條件

    ......

    else'剩下的就是不符合第一條件與第二條件

    ........

    end if

    end if

    2009-07-18 10:38:39 補充:

    例2.少 If X Mod 5 = 0 Then這句,篩選正確,但不會繼續執行第二列以下

    你的設定_是正確

    因設定只要_二者其一符合_即執行_

    你並沒有設定_執行下一行的其他指令.

    2009-07-22 09:06:23 補充:

    巨集裏有下列 語法

    x = x + 1 '開始產生執行x次

    Do While Range("AC" & x + 6) = "OK" '直到不OK

    x在迴圈外__當然只有執行一次.

    x = x + 1 '開始產生執行x次_____試試此句放到迴圈內

  • 顯栓
    Lv 7
    1 0 年前

    If X Mod 5 = 0 Then

    X1 = X / 5

    Else

    X1 = Int(X / 5) + 1

    End If

    取 X/5 的整數+1 如X為 0 則為 0 不加 1

    Not Range("AC" & X + 7) = "OK" '的作用如何再說明?

    才知放那裡 , 就是說你的篩選條件是什麼?

還有問題?馬上發問,尋求解答。