2016-12-15 100 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列所有匹配的值,并会确切地知道,如果一些值出现不止一次。