宝哥软件园

如何使用公式自动填写符合相应条件的数字?

编辑:宝哥软件园 来源:互联网 时间:2021-09-19

问:这是知乎上一位网友提出的问题。如下图,N类对应的日期自动填入o列

a:想了很久,没有想到一个简单的公式。用数组公式找到n对应的日期个数并不难,但如何把找到的日期个数连在一起难住我了!好在Excel 2 16增加了一个TEXTJOIN函数,解决了这个连接问题。

这是我的数组公式:

=TEXTJOIN(",",TRUE,SMALL(IF($B3:$M3="N ",COLUMN($ B 3: $ M $ 3)-1),ROW(INDIRECT(" 1: " COUNTIF($ B 3: $ M3,"=N "))))

在单元格O3中输入上述公式,按Ctrl+Shift+Enter。然后往下拉。

在公式中:

列(3:美元3百万美元)-1

获取对应于日期值的数字数组{1,2,3,4,5,6,7,8,9,1,11,12}。

IF($ B 3: $ M3=“N”,COLUMN($ B 3: $ M $ 3)-1)

将单元格区域B3:M3中的值与“n”进行比较,如果单元格中的值为“n”,则返回上述日期值数组中的数字,否则返回FALSE。这样,就生成了一个数组:{false,false,false,false,6,7,false,9,false,false,false}作为SMALL函数的第一个参数。

COUNTIF($B3:$M3,"=N ")

计算单元格区域B3:M3中值“n”的数量,并在第三行中执行动作3。

ROW(间接(" 1:" COUNTIF($B3:$M3,"=N "))

返回数组{ 1;2;3}作为SMALL函数的第二个参数。

这样,SAMLL函数就变成了:

SMALL({FALSE,FALSE,FALSE,FALSE,FALSE,6,7,FALSE,9,FALSE,FALSE,FALSE},{ 1;2;3})

忽略布尔值,获取由数组中前三个最小值组成的数组:

{6;7;9}

此时,公式转换为:

TEXTJOIN(",",TRUE,{ 6;7;9})

指示数组{ 6;7;9},忽略空值。结果是:

6,7,9

以上是我的解决方案和流程分析。你有更好的解决办法吗?

更多资讯
游戏推荐
更多+