2017-04-19 18 views

回答

1

由於@ YowE3K評論說,有一個原因,我使用"=" & "John*")。這是爲將來使用變量而不是硬編碼的「約翰」做準備。

如果你想使用VBA的解決方案,你可以使用:

Range("A199").Value = WorksheetFunction.CountIf(Range("A1", Range("A1").End(xlDown)), "=" & "John*") 

或者,更好:

Const NametoFind As String = "John" 

Range("A199").Value = WorksheetFunction.CountIf(Range("A1", Range("A1").End(xlDown)), "=" & NametoFind & "*") 

注意Range("A1", Range("A1").End(xlDown))將爲連續範圍只工作(如果沒有你有空白單元格在你的範圍中)。

+0

'「=」&「John *」'?真??這浪費了5個按鍵!無論使用什麼''=約翰*「'??!?! (只是開玩笑 - 有一個很好的理由去做你所做的事情,或者甚至更好'「=」&「John」和「*」' - 它使得用變量代替硬編碼的「John」更容易) – YowE3K

+0

@ YowE3K你是對的,我是在答案的中途,當我不得不參加一個工作會議(當你的工作干擾你的**時,你不是隻討厭它) –

+1

我不能當我有一個工作會議時真的抱怨 - 我想我應該在每個工作日至少給公司30分鐘的時間。 ;) – YowE3K

3

你不需要VBA。您可以在COUNTIF/COUNTIFS中使用通配符 - 使您的標準爲「John *」(so,=COUNTIF(A1:A7, "John*"))。

0

如果你被允許使用一個額外的列,讓一個對你的名字列之後,用下面的公式:

=ISNUMBER(SEARCH("JOHN"; A1) 

上面的例子應該是在細胞B1。那麼如果列A中的單元格包含名稱「JOHN」,則會得到TRUE,否則您將得到FALSE。然後你只需做一個計數:

=COUNTIF(B:B; TRUE) 

這可能是一個輕微的缺點是你必須使用一個額外的列。但從正面來看,這是非常容易理解的(對於你自己和其他可能會讀你的代碼的人)。

相關問題