iT邦幫忙

0

excel vba 型態不符合問題

wsj 2020-09-05 15:30:552478 瀏覽
  • 分享至 

  • xImage

各位大大,
我的vba程式,其中一段在執行時"aryi"顯示資料不符合,請問在哪有出錯?請大大指正,謝謝!
Dim aryi(1 To 49), sum As Integer
sum = Application.WorksheetFunction.CountIf(aryi, ">2")

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
wrxue
iT邦好手 1 級 ‧ 2020-09-05 15:39:29

參考WorksheetFunction.CountIf method (Excel)可以知道第一個參數型態應該是Range

Sub test()
    Dim aryi As Range
    Dim sum As Integer
    
    Set aryi = Range("A1:A49")
    sum = Application.WorksheetFunction.CountIf(aryi, ">2")
    MsgBox sum
End Sub
看更多先前的回應...收起先前的回應...
wsj iT邦新手 5 級 ‧ 2020-09-05 16:00:33 檢舉

aryi已是陣列型態,當符合range,所以還是請再麻煩看看!

wrxue iT邦好手 1 級 ‧ 2020-09-05 16:13:36 檢舉

請問您說的「符合」是從甚麼定義或參考來的呢?
Range object (Excel)
Using arrays
沒看到任何他們相同可以互通的依據,上網google找「vba array range」多的是他們轉換的方法,沒看到能互通直接能用的

wsj iT邦新手 5 級 ‧ 2020-09-05 16:27:41 檢舉

我的程式運算都在vba執行,可否不用再回工作表換成range型態再執行
Application.WorksheetFunction.CountIf

wrxue iT邦好手 1 級 ‧ 2020-09-05 16:40:07 檢舉

參考這篇問答裡的回答吧excel - VBA Why does Application.Countif return an array or error 424

you are intentially trying to use the Application.WorksheetFunction.CountIf statement on an array. that will only cause trouble, since CountIf (as the statment suggests) is a"worksheet function"not a"VBA array function".

VBA沒有給array給一個類似countif的工具,個人建議就是改用迴圈算出來您要的統計

wsj iT邦新手 5 級 ‧ 2020-09-05 16:55:14 檢舉

那改成sum = Application.WorksheetFunction.sumproduct((aryi >2)*1),反而是">"顯示型態不符合,這又該如何?

wrxue iT邦好手 1 級 ‧ 2020-09-05 17:10:06 檢舉

「陣列」跟一個「數值」比較後,會回傳甚麼您真的知道嗎

我要發表回答

立即登入回答