Board logo

標題: CountIf問題 [打印本頁]

作者: basarasy    時間: 2010-10-21 17:52     標題: CountIf問題

  1. Sub MYts()
  2. A = 1
  3. If WorksheetFunction.CountIf(Range("A1:A10,C1:D3"), A) > 0 Then
  4. MsgBox A + 1
  5. Else
  6. MsgBox A
  7. End If

  8. End Sub
複製代碼
請問大大為什麼不可以Range("A1:A10,C13")?
作者: dechiuan999    時間: 2010-10-21 18:27

大大你好:

   小弟試著修改如下即可
請試試

If Application.WorksheetFunction.CountIf(Range("A1:A10", "C13"), A) > 0 Then

或是

If Application.CountIf(Range("A1:A10", "C13"), A) > 0 Then

也可以。

這是小弟常常看到版主大大使用的語法。
至於差異為何小弟也還不是很了解。
還要請版主大大說明了。
作者: basarasy    時間: 2010-10-21 19:30

回復 2# dechiuan999


    謝謝你.
我試過是不行的.
作者: Hsieh    時間: 2010-10-21 20:03

本帖最後由 Hsieh 於 2010-10-21 20:12 編輯

回復 3# basarasy


    你在工作表中輸入公式
=COUNTIF((A1:A10,C1:D3),1)
得到的是#VALUE錯誤值
因為COUNTIF的Range參數要連續儲存格不可以示2個範圍的聯集
測試看看Rang位址字串不同得到甚麼不同情形
  1. Sub TestAddress()
  2. Set Rng = Range("A1:A10")
  3. Range(Rng.Address).Select
  4. MsgBox Rng.Address
  5. Set Rng = Range("A1:A10", "C1:D3")
  6. Range(Rng.Address).Select
  7. Range(Rng.Address).Select
  8. MsgBox Rng.Address
  9. Set Rng = Range("A1:A10,C1:D3")
  10. Range(Rng.Address).Select
  11. MsgBox Rng.Address
  12. Set Rng = Union(Range("A1:A10"), Range("C1:D3"))
  13. Range(Rng.Address).Select
  14. MsgBox Rng.Address
  15. Set Rng = Range("A1:A10 A4:A10")
  16. Range(Rng.Address).Select
  17. MsgBox Rng.Address
  18. End Sub
複製代碼

作者: basarasy    時間: 2010-10-21 20:10

回復 4# Hsieh


    明日了.
那只好用
If Application.CountIf(Range("A1:A10"), A) > 0 Or Application.CountIf(Range("C13"), A) > 0 Then
作者: GBKEE    時間: 2010-10-21 21:21

回復 5# basarasy
變通一下
  1. Sub Ex()
  2.     Dim R, A, B
  3.     A = 1
  4.     For Each R In Range("A1:A10,C1:D3").Areas
  5.         B = B + WorksheetFunction.CountIf(R, A)
  6.     Next
  7.     If B > 0 Then MsgBox B
  8. End Sub
複製代碼

作者: basarasy    時間: 2010-10-21 23:15

本帖最後由 basarasy 於 2010-10-22 00:16 編輯

回復 6# GBKEE
謝謝大大.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)