2011-12-21 44 views

回答

52

您的意思是您想在VBA中使用公式嗎?例如:

Dim iVal As Integer 
iVal = Application.WorksheetFunction.COUNTIF(Range("A1:A10"),"Green") 

應該工作。

+2

順便說一句,你可以在你的搜索字符串中添加通配符:'iVal = Application.WorksheetFunction.COUNTIF(Range(「A1:A10」),「* Green *」)' – 2015-10-30 15:57:47

11

這不是究竟是你在找什麼,但這是我過去如何解決這個問題;

您可以輸入一個公式如:

=COUNTIF(A1:A10,"Green") 

...進入細胞。這將計算A1和A10之間包含文本「綠色」的單元格數量。然後,您可以在VBA宏中選擇該單元格值並將其作爲正常分配給一個變量。

+0

你的答案desserves +1給了按照正確的方式。我希望這會鼓勵你繼續回答其他問題 – JMax 2011-12-24 14:28:01

+0

好的答案謝謝你,以不同的方式表明我可以做到這一點 – BradStevenson 2012-01-04 12:14:11

2

單程;

var = count("find me", Range("A1:A100")) 

function count(find as string, lookin as range) As Long 
    dim cell As Range 
    for each cell in lookin 
     if (cell.Value = find) then count = count + 1 '//case sens 
    next 
end function 
+0

作品 - 但在體積較大的範圍內測試逐個單元格會很慢,更好地使用像JMax這樣的函數,或者使用範圍'Find'方法 – brettdj 2011-12-22 06:09:09

+0

Works,非常感謝,但是和上面一樣,JMax的方法似乎對我更好用 – BradStevenson 2012-01-04 12:13:33

0

不是你問的,但可能有用。

當然你可以用矩陣公式做同樣的事情。 只是讀取包含電池的結果:

Cell A1="Text to search"
Cells A2:C20=Range to search for

=COUNT(SEARCH(A1;A2:C20;1)) 

請記住,進入矩陣公式需要CTRL + Shift + Enter,而不只是ENTER鍵。 後,它應該是這樣的:

{=COUNT(SEARCH(A1;A2:C20;1))}

+2

bummi ...如果有人做出否定評估會告訴我們爲什麼會不會很酷?那麼下一次,我不會犯同樣的錯誤?我知道我是一個新手,所以我可能是錯的... – 2014-12-19 13:56:09

+1

我不是投票的人,但我的猜測是,問題開始「我需要寫一個宏」,它有「VBA 「在標題的開頭,但你的答案實際上是一個工作表函數。我也覺得看到沒有任何解釋的讚譽是令人討厭的。 – 2017-05-31 21:32:59