2016-12-15 93 views
0

我試圖用公式找到一個日期範圍內工作日(週一,週二,等等)的模式:模式與SUMPRODUCT式

=ARRAYFORMULA(MODE(SUMPRODUCT(--(AgendaData!$A:$A>=A$6),--(AgendaData!$B:$B<=B$6),AgendaData!$F:$F)))

錯誤寫着:「MODE不能產生一個結果,沒有值多次出現。「

我認爲這與F列是文本格式有關。我希望結果能夠在文本中顯示星期幾的模式。我想知道我在這裏做錯了什麼。

+0

不是「沒有值超過一次」解釋是什麼問題? – FTP

+0

我在F欄中看到:星期一,星期二,星期一,星期四,星期三。 實際上有兩個星期一的時候,它不會顯示結果爲「星期一」,那就是模式。 我認爲這是誤解列,因爲它正在搜索數字而不是文本。 –

+0

確實,'mode'忽略所有字符串;這是一個數字函數。順便說一句,「sumproduct」也是。考慮到sumproduct返回一個值,我不清楚'mode(sumproduct(...))'應該如何工作。 – FTP

回答

2

通過將文本值轉換爲數字,找到模式並轉換回來,您可以找到文本值的模式。它的方便使用一個三列的查找表對於這一點,例如,

Monday  1 Monday 
Tuesday  2 Tuesday 
Wednesday 3 Wednesday 
Thursday 4 Thursday 
Friday  5 Friday 
Saturday 6 Saturday 
Sunday  7 Sunday 

比方說,此表是我列:K,和你的數據在列F那麼下面找到它的模式:

=vlookup(mode(arrayformula(iferror(vlookup(F:F, I:J, 2, false)))), J:K, 2) 

這裏,arrayformula(iferror(vlookup...是使用表格的I:J部分轉換爲數字,忽略空白單元格以及任何非星期幾的內容。在應用mode後,vlookup使用表格的J:K部分將數字轉換回文本。

+0

完美!這是我正在尋找的,zaq!我可以有你的大腦嗎? –

0

檢查出來,你可以使用公式:

=filter(AgendaData!$F:$F,AgendaData!$A:$A>=A$6,AgendaData!$B:$B<=B$6) 

你會看到從F列所有匹配的值,並會確切地知道,如果一些值出現不止一次。