前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >问与答58: 如何用公式实现自动填入满足相应条件的数字?

问与答58: 如何用公式实现自动填入满足相应条件的数字?

作者头像
fanjy
发布2019-07-19 11:55:21
1.8K0
发布2019-07-19 11:55:21
举报
文章被收录于专栏:完美Excel

学习Excel技术,关注微信公众号:

excelperfect

Q:这是一名知乎网友提出的问题,如下图1所示,在列O中自动填写N班对应的日期。

图1

A:想了半天,没有想到简单的公式。使用数组公式找到N对应的日期数不难,但是如何将找到的多个日期数连在一起却难倒了我!幸好,Excel 2016版新增了一个TEXTJOIN函数,完美解决了这个连接问题。

下面是我的数组公式:

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

在单元格O3中输入完上述公式后,按Ctrl+Shift+Enter组合键。然后向下拉即可。

公式中:

COLUMN($B$3:$M$3)-1

得到数字数组{1,2,3,4,5,6,7,8,9,10,11,12},对应日期数值。

IF($B3:$M3="N",COLUMN($B$3:$M$3)-1)

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

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

统计单元格区域B3:M3中数值“N”的个数,在第3行为3。

ROW(INDIRECT("1:" &COUNTIF($B3:$M3,"=N")))

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

这样,SAMLL函数变为:

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

忽略布尔值,得到数组中前3个最小数值组成的数组:

{6;7;9}

此时,公式转换为:

TEXTJOIN(“,”,TRUE,{6;7;9})

表明使用“,”将数组{6;7;9}中的值连接起来,忽略空值。结果为:

6,7,9

以上是我的解答及过程解析,你有更好的解决方法吗?特别是Excel 2016之前的版本中怎样才能实现公式中生成的数组连接呢?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档