Board logo

標題: [發問] 函數使用VBA寫法 [打印本頁]

作者: li_hsien    時間: 2015-1-13 14:09     標題: 函數使用VBA寫法

請問各位大大

最近需要計算項目個數

因為2003沒有移除重複,使用移除重複可能會有相容性的問題

GOOGLE查詢到計算項目個數的方法如下(不過我看不懂這邏輯為何@@)
  1. =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))
複製代碼
EX:
        A
       456
       123
       123
       789
       123
       789
       456
       000
       123
       000
使用以上方法可得到4


但因為我想使用在VBA語法中

修正如下
  1. Application.SUMPRODUCT(1/Application.COUNTIF(range("A1:A10"),range("A1:A10")))
複製代碼
但是會出現型態不符

不知該如何修正,才能使用在VBA中

P.S. 我不想用FormulaR1C1錄製巨集出來的方式

煩請各位解惑

謝謝!!!
作者: diolin    時間: 2015-1-21 08:46

用 Evaluate

Application.Evaluate("SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))")
作者: 電暖爐    時間: 2015-1-22 00:23

worksheetfunction.SUMPRODUCT
作者: diolin    時間: 2015-1-22 09:44

回復 3# 電暖爐

樓主用的是陣列公式, 所以用 worksheetfunction 不適用
作者: li_hsien    時間: 2015-1-22 13:19

回復 4# diolin

感謝diolin及電暖爐的協助

第一次知道Evaluate及Worksheetfunction的作法

能否勞煩大大簡要說明一下這兩者的用途呢???

謝謝!!!
作者: diolin    時間: 2015-1-22 18:07

回復 5# li_hsien

worksheetfunction 顧名思義, 就是工作表的函數, 也就是平常在寫的公式, 大部份都可以用
你用 application.函數 其實也可以, 但用worksheetfunction 會更直覺

Evaluate 就是把運算後面的東西, 你可以想成就像寫在 cell 裡一樣
作者: li_hsien    時間: 2015-1-23 10:13

回復 6# diolin

又多學到了一點東西了!!!

我再試試

感謝diolin指教




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