小伙伴们好啊,今天咱们分享一个和频数(频次)计算有关的内容。
如下图所示,是某鞋店部分款式女鞋的存货情况,希望使用公式判断是不是断码。判断规则为:每个款色连续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函数进行判断并返回“齐码”或是“断码”。
好了,以上就是今天的全部内容,祝各位一天好心情~~
|
|
打开微信扫一扫,Office自学网
专注分享软件安装和视频教程,让你一号在手,办公无忧!