2016-08-22 72 views
1

我被困在使用具有多個條件的小函數並且不包括零的excel中找到至少10個值。多條件小函數excel

  • 我有4列,人,日期,小時和天氣。
  • 我想要一個人考慮所有日期的最少幾小時,天氣不應該下雨。

我已經使用這個公式:

=small(if(and(person="a",hours,"<>0",weather,"<>rainy"),hours),no) 

在沒有代表1-5的數字。

回答

2

數組公式不喜歡ANDOR,所以他們相乘,使用僞代碼減少他們自己的布爾值:

=small(if((person="a")*(hours <> 0)*(weather<>"rainy"),hours),no) 

請記住,這是一個數組公式,必須用Ctrl確認-Shift-Enter退出編輯模式時不輸入。

因此,如果人被列A,小時列B,和天氣列C,把這個在第一個單元格中,你想要的答案:

=SMALL(IF((A1:A100 = "a")*(B1:B100 <> 0) * (C1:C100 <> "rainy"),B1:B100),Row(1:1)) 

確認使用Ctrl-Shift鍵輸入抄下所需數量的結果。行(1:1)將從1複製到2到3,因爲它被複制下來。

3

已經提供了一種陣列配方解決方案;另一種標準公式(即非CSE)方法可以是較新的AGGREGATE¹ function,其提供了循環處理層而不必使用CSE進行最終確定。

AGGREGATE可以選擇忽略錯誤;通過強制任何不符合規定的值組合到#DIV/0!狀態,這些值將被忽略。當所有三個條件匹配時,分母將爲,任何除以1的數字都不會改變。

=AGGREGATE(15, 6, C$2:C$13/((A$2:A$13=G$4)*(D$2:D$13=H$4)*(C$2:C$13<>0)), ROW(1:1)) 

填寫爲第二,第三等最小。如果您更願意填寫正確的內容,請將ROW(1:1)更改爲COLUMN(A:A),以獲得橫向遞增的k。請記住要將範圍和標準參考的列「錨定」到$

aggregate_three_column_match_2


¹AGGREGATE function用Excel 2010中引入的。它是不是在早期版本。

+0

15,6是什麼意思在公式開頭 – ASK

+0

瞭解上面的一個。最後一個問題是如何使運算符成爲OR函數而不是AND。 – ASK

+0

使用[SIGN功能](https://support.office.com/zh-cn/article/SIGN-function-cfaaf798-9b34-4569-955c-a74a523a7c4a)以基於總和爲0或1布爾條件。例如'C $ 2:C $ 13/SIGN((A $ 2:A $ 13 = G $ 4)+(d $ 2:d $ 13 = H $ 4)+(C $ 2:C $ 13 <> 0))' – Jeeped