2017-02-03 12 views
0

我的問題是關於VBA countifs(),它正在評估一列中的字母數據和另一列中的數字數據。我已經在這張表的另一部分使用了多條標準countifs()。該公式看起來像這樣:VBA countifs()w/multiple criteria - >一些文本的一些數字

Filedresult = WorksheetFunction.CountIfs(range("n:n"), "TT", range("P:P"), "Filed") 
MsgBox Filedresult 

以下是我需要幫助的過濾器代碼。我需要COUNTIFS()過濾器計數細胞的數目是:

StartYear列W = 2017並且在開始周&之間EndWeek = 1 & 4 OR具有WeekValue = 1,2,3和4

Dim StartYear  As Integer 
Dim StartWeek  As Integer 
Dim EndWeek   As Integer 

'Setting Start Year, Start Week, and End Weeks 
StartYear = WBsheetTwo.range("g5") 
MsgBox StartYear 
'THIS VALUE CURRENTLY ='s 2017 

StartWeek = WBsheetTwo.range("g6") 
MsgBox StartWeek 
'THIS VALUE CURRENTLY ='s 1 

EndWeek = WBsheetTwo.range("g7") 
MsgBox EndWeek 
'THIS VALUE CURRENTLY ='s 4 

這是我迄今爲止基於之前建立的countifs()的結構嘗試構建的過濾器。

我已經重新編寫了這篇文章,試圖根據讀者的要求使我的問題更加清晰。讓我知道如果有什麼我可以澄清!仍然是新的論壇!感謝您的幫助

****************************************FILTER************************* 
'WEEK FILTER for # of TT Values 
If WBsheetTwo.range("h6").Value = "YES" Then 
MsgBox "Week Filter Is ON" 

WBsheetOne.Activate 
TTresultWFilter = WorksheetFunction.CountIfs _ 
    (range("n:n"), "TT", _ 
    range("w:w"), "&StartYear&", _ 
    range("x:x"), "1", _ 
    range("x:x"), "2", _ 
    range("x:x"), "3", _ 
    range("x:x"), "4") 

MsgBox TTresultWFilter 

Else 
MsgBox "Week Filter if OFF" 

'Pasting Origional TT Filter W/O Weeks Filter 
WBsheetTwo.Activate 
range("f12").Value = TTresult 


****************************************FILTER************************* 
+3

* ...我需要幫助* - * *正是你需要什麼幫助?請編輯您的問題以獲得更具體的問題。 ....其實,我看到兩件事情:1)用'&StartYear'&''替換CountIfs中的'「2017」'。如果該列是文本,則可以用'Cstr'封裝StartYear。 2)你定義的範圍(「x:x」)限制的次數也是一個問題。 'CountIfs'不能這樣工作。您需要將多個CountIfs一起添加。 –

+0

謝謝你的回覆,我已通過郵件更新。根據過濾器不完整添加不同的countifs()雙計數數據? –

+0

我認爲@ScottHoltzman的意思之一是'countifs()'不會做「或」。它只是做「和」。所以你不能通過一次調用'countifs()'來表達你的WeekValue條件。 – vknowles

回答

0

變化

TTresultWFilter = WorksheetFunction.CountIfs _ 
    (range("n:n"), "TT", _ 
    range("w:w"), " & StartYear & ", _ 
    range("x:x"), "1", _ 
    range("x:x"), "2", _ 
    range("x:x"), "3", _ 
    range("x:x"), "4") 

TTresultWFilter = WorksheetFunction.CountIfs _ 
    (range("n:n"), "TT", _ 
    range("w:w"), " & StartYear & ", _ 
    range("x:x"), ">=" & StartWeek & ", _ 
    range("x:x"), "<=" & EndWeek & ")" 
+0

斯科特,我似乎在您的代碼中獲得「預期:列表分隔符或」)錯誤。您是否知道您正在使用的&分隔符的VBA名稱? –

+0

@ReedTurgeon - 玩弄引號環繞'> ='和'<='的方式。對不起,我現在沒有時間自己玩。 –