哪位excel老师帮忙看一下,这个用函数公式怎么来实现?

请老师看一下图片,谢谢。knifefox 这位老师,你写的这个公式,只能在连续4次不重复下才好用,如遇重复值,取不出4个近期不重复数字(图2是以你公式的做出来的效果)。
我刚想到的计算思路,老师看看有没有办法用公式来实现,因考虑到重复值的出现,前9期容易出现不满足4个数的情况,从第10期M11开始,在你原公式取值后,再做判断是否满足4位数,不满足,再往上加1期,对近5期取出不重复的4个数,以此往上,直到取够连续近期4个数为值

有图,有行号,有列号,有说明,真好。

按照题主的图片,计算过程其实很复杂:

如果连续四个格子数字不一样,那么按大小排序。如果有一个重复值,就向上再取一个数,就是五个数字去重后按大小排序(比如紫色格子和绿色格子)。如果有两个重复值,就向上取两个数,就是六个数字去重后按大小排序(比如黑色格子)。

只能提供一个思路,供题主和大神们参考。

(我office是2016版的,无法验证大神1的数组公式,当然了最主要的原因是我没看懂大神1的公式。大神2的公式应该是没有考虑到数据重复的问题,所以计算结果跟题主不一样。)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-18
M6输入:
=CONCAT(SUBSTITUTE(IFERROR(SMALL(IFERROR(INDEX(B:B,N(IF({1},LARGE(IF(MATCH(INDEX($B$2:B5,N(IF({1},ROW()-ROW($2:5)))),INDEX($B$2:B5,N(IF({1},ROW()-ROW($2:5)))),)=ROW($1:4),ROW()+1-ROW($2:5)),ROW($1:$4))))),""),ROW($1:$4)),""),10,0))
ctrl+shift+回车
注:需2019或365版支持,如果没有2019、365,则自定义CONCAT函数,alt+F11打开vbe编辑器,插入模块,粘贴以下代码:
Function CONCAT(texts)
Application.Volatile True
CONCAT = Join(WorksheetFunction.Transpose(texts), "")
End Function
第2个回答  2020-03-14

数组公式,按ctrl+shift+enter输入公式

=SUM(MOD(LARGE(IF(COUNTIF(B2:B5,ROW($1:$10)),ROW($1:$10),),{1,2,3,4}),10)*10^{0,1,2,3})

本回答被网友采纳
相似回答