2009-02-05 89 views
6

我在Excel中兩列,就像這樣:我可以在兩列上使用COUNTIF來比較值嗎?

A B 
0.5 0.4 
0.6 0.59 
0.1 0.2 
0.3 0.29 

我要統計有多少B中的值都小於A.相應的值在這種情況下,答案是3

我可以通過添加一個額外的列,B-A,然後做COUNTIF(RANGE, "<0")來做到這一點,但我想知道是否有辦法做到這一點,而無需添加額外的列。

我意識到這是在人們可能考慮編程的邊緣,但希望它只是在線的右側,而不是錯誤的一側。

回答

17

這可以使用Excel數組公式來完成。試着做這樣的事情:

=SUM(IF(A1:A5 > B1:B5, 1, 0)) 

非常非常重要組成部分,是按的CTRL-SHIFT-ENTER而不是僅僅ENTER當你完成輸入公式。否則,它不會理解你想將數據視爲一個數組。

1

有一個解決方案,但它仍然涉及2個額外的單元格:DCOUNT。

下面是一個例子(插入到指定細胞的冒號後的確切文字):

A1:條件

A2:= B4> A4

A3:甲

B3:乙

A4:700

B4:5000

A5:700

B5:600

A6:7000

B6:6000

A7:700

B7:701

細胞與計數式:= DCOUNT(A3:B7,「B」,A1:A2)

+0

完美 - 這樣做的工作。謝謝!我以前從未遇到DCOUNT。 – Ben 2009-02-05 12:32:47

+0

對不起:我已經接受了你的答案,但實際上,對於我來說,scraimer的答案對我來說會更好一些。 – Ben 2009-02-05 12:36:20

1

其實這是我做一個程序。

創建一個宏至:所有N個

  • 插入柱C.
  • 設定的範圍( 「CN」)的值爲 「= BN-AN」,其中的範圍( 「AN」)值<>「」。
  • 做你的countif計算,並將其推入一個單元格(而不是列C)。
  • 刪除列C.

有可能是一個更簡單的非編程方式,但我不知道它(然後你的問題將被關閉,無論如何)。

0

scraimer解決方案沒問題。但一個有趣的,

你也可以寫出像下面這樣的宏觀和分配

=myOwnFunction(A1:A5,B1:B5) 

這種方法可以擴展用於其他任何邏輯功能,如A * B + C < C + d * E等....

Function myOwnFunction(R1 As Range, S1 As Range) 

    Dim J As Integer 

    Dim Size As Integer 

    Dim myCount As Integer 


    Size = R1.Cells.Count 

    myCount = 0 

     For J = 1 To Size 

      If (R1.Cells(J) > S1.Cells(J)) Then 

      myCount = myCount + 1 

      End If 

     Next J 


    myOwnFunction = myCount 

End Function