2015-09-12 140 views
-1

我有一個excel表格,分別是A1 = "YES",B1 = "YES"C1 = "YES"。我想知道有多少「YES」在我的表,這是很容易與=COUNTIF(A1:C1,"YES")解決,它將準確地給我3excel函數中的非連續範圍

A B C 
1 YES YES YES 

的答案,但如果想知道有多少「YES」在A1和C1並忽略B1變得棘手。同樣的功能給我3,而我想讓它給我2作爲答案,因爲我只想計算A1和C1。

我想知道是否有辦法管理數據,所以我只能使用那種非連續的單元格?我發現一個解決方案將使用像=if(A1="YES",1)+if(C1="YES",1)這樣的東西,它的功能就像一個魅力,因爲它總是會給我正確的答案;然而,這不是一個令人滿意的解決方案,因爲儘管我的例子很簡單,但我的實際情況要求從500範圍內編寫大約100個單元格,用於幾種不同的組合,這些組合可能會變得很重。

我試過使用名稱範圍,但它似乎如果功能不讓我用我想要的方式。所以,任何幫助將是一個推測,謝謝。

+0

是的,像COUNTIF這樣的函數有限制,就像所有的一樣,如果它的列基於爲什麼不在每列的底部包含'COUNTIF'然後總計總和? – hammus

+0

'CountIf'似乎[不支持非連續範圍](http://superuser.com/a/447560/52365)。 – GSerg

+0

列錯開了嗎? 'MOD(COLUMN(),x)',其中x表示可以使用的交錯。需要比「來自500個範圍的約100個單元」更多的信息。 – Jeeped

回答

0

如果VBA是一個選項,並且「excel函數中的非連續範圍」是個問題,那麼您可以創建一個User Defined Function,它需要一個ParamArray並從所有給定參數中返回一個數組。

Public Function getMatrix(ParamArray aValues() As Variant) As Variant 
Dim i As Long 
Dim aReturnValues() As Variant 
For Each vValue In aValues 
    For Each vSingleValue In vValue ' possible the vValue is also an array 
    ReDim Preserve aReturnValues(i) 
    aReturnValues(i) = vSingleValue 
    i = i + 1 
    Next 
Next 
getMatrix = aReturnValues 
End Function 

這可以隨後被用於像:

​​

式中A4

=SUMPRODUCT(--(getMatrix(A1,C1,E1:G1,D2:E3)="Yes")) 

筆記,所述UDF被返回一個數組,而不是一個Range。這就是爲什麼我們不能使用COUNTIFCOUNTIF需要Range作爲第一個參數。

0

爲什麼在Excel中有其他功能時查找公式?添加一行(#2),並有A2 = 1,B2 = 0,C2 = 1直到最後一列[拖動它填充,確保複製單元格]。然後選擇行並查看狀態欄中的總和。

0

看看this線程。基本上你需要的是這樣的:

=SUM(COUNTIF(INDIRECT({"A1:A10","C1:c10"}),"a")) 

或者只是使用多個COUNTIF,並添加它們。 (Countif(...)+ countif(...)等)

相關問題