返回列表 上一主題 發帖

CountIf問題

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")?
50 字節以內
不支持自定義 Discuz! 代碼

大大你好:

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

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

或是

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

也可以。

這是小弟常常看到版主大大使用的語法。
至於差異為何小弟也還不是很了解。
還要請版主大大說明了。

TOP

回復 2# dechiuan999


    謝謝你.
我試過是不行的.
50 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 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
複製代碼
學海無涯_不恥下問

TOP

回復 4# Hsieh


    明日了.
那只好用
If Application.CountIf(Range("A1:A10"), A) > 0 Or Application.CountIf(Range("C13"), A) > 0 Then
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 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
複製代碼

TOP

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

回復 6# GBKEE
謝謝大大.
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 【時日莫空過】一個人在世間做了多少事,就等於壽命有多長。因此必須與時間競爭,切莫使時日空過。
返回列表 上一主題