桓楠百科网

编程知识、经典语录与百科知识分享平台

频数计算的典型公式,干货速收

小伙伴们好啊,今天咱们分享一个和频数(频次)计算有关的内容。

如下图所示,是某鞋店部分款式女鞋的存货情况,希望使用公式判断是不是断码。判断规则为:每个款色连续3码大于0时为齐码,否则为断码。

接下来咱们说说这种问题的两种经典解法:

解法1:

=IF(MAX(FREQUENCY(IF(B3:G3>0,COLUMN(B:G)),IF(B3:G3=0,COLUMN(B:G))))>2,"齐码","断码")

输入以上公式,按Shift+Ctrl不放,再按回车。

FREQUENCY函数用于计算在一组数据中,不同分段的数值个数。

第一参数是要处理的一组数据,第二参数是各个分段的节点。

本例中,第一参数是IF(B3:G3>0,COLUMN(B:G)),换成普通话就是如果B3:G3大于0,就返回对应的列号,否则返回0。这部分的公式结果为:

{FALSE,3,4,5,FALSE,7}

与上图的第三行对照一下,数组中的每个值就是第三行中不为空的列号。

FREQUENCY函数的第二参数是IF(B3:G3=0,COLUMN(B:G)),换成普通话就是如果B3:G3等于0,就返回对应的列号,否则返回0。这部分的公式结果为:

{2,FALSE,FALSE,FALSE,6,FALSE}

FREQUENCY函数在处理时,会自动忽略参数中的逻辑值。去掉逻辑值后,第一参数变成了{3,4,5,7},第二参数变成了{2,6}。

FREQUENCY函数计算在{3,4,5,7}这组数据中,小于等于2的个数为0个,大于2且小于等于6的个数为3个,大于6的个数为1个。计算后的内存数组结果为:

{0;3;1}

接下来使用MAX函数计算出其中的最大值3,就是大于0的最大连续次数。

最后用IF函数进行判断,如果MAX的结果大于2,则为“齐码”,否则为“断码”。


解法2:

在Excel 2021或者最新版的WPS表格中,还可以使用以下公式:

=IF(MAX(LEN(TEXTSPLIT(CONCAT(IF(B3:G3>0,1,0)),0)))>2,"齐码","断码")

公式中的IF(B3:G3>0,1,0)部分,用IF函数进行判断,如果B3:G3的某个元素大于0,结果返回1,否则返回0。这部分的判断结果为:

{0,1,1,1,0,1}

接下来使用CONCAT函数将以上内存数值的各个元素连接到一起:

"011101"

再使用TEXTSPLIT函数,用0做间隔符号进行拆分,结果为:

{"","111","1"}

然后使用LEN函数计算以上内存数组中各个元素的字符长度:

{0,3,1}

用MAX函数提取出最大值后,最后用IF函数进行判断并返回“齐码”或是“断码”。


好了,以上就是今天的全部内容,祝各位一天好心情~~


图文制作:祝洪忠

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言