前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel公式技巧04: ROW与ROWS函数,生成连续的整数

Excel公式技巧04: ROW与ROWS函数,生成连续的整数

作者头像
fanjy
发布2020-02-18 12:18:39
1.3K0
发布2020-02-18 12:18:39
举报
文章被收录于专栏:完美Excel

有时候,我们希望公式中有一部分能够在该公式向下复制到连续的行时,生成一系列连续的整数。

一个经典的示例是使用INDEX/SMALL组合的公式,例如下面的公式1:

=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10="A",ROW($A$1:$A$10)-MIN(ROW($A$1:$A$10))+1),1))

查找单元格区域A1:A10中数据为“A”的第一个单元格,并提取单元格B1:B10中对应行的数据,如下图1所示。

图1

实际上,还可以使用一个更简单一点的公式2:

=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10="A",ROW($A$1:$A$10)),1))

然而,我觉得开头提到的那个长一点的公式1更好一些,因为如果单元格区域不是从A1开始的话,那个公式1更灵活。

在公式中,末尾的1代表SMALL函数中的参数k,即第k小的值,上例中我们取出的是找到的第1个值。在图1中我们可以看到,列A中还有几个单元格中的数据是“A”,如果我们要全部获取这些值,则需要末尾的参数k能够变成2、3,等等。

可以使用ROW函数:ROW()或者ROW(A1),如下公式3:

=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10="A",ROW($A$1:$A$10)-MIN(ROW($A$1:$A$10))+1),ROW()))

将公式向下拖放至单元格D3,即可获得该示例中所有的结果,如下图2所示。

图2

然而,这样的方式存在两个缺点:

1. 其值取决于最开始放置公式的那个单元格。

2. 如果在所涉及到的单元格区域中插入或删除行,那么可能得到错误的结果。

其实,解决这样的问题的最好方法是使用ROWS函数:

ROWS($1:1)

或者:

ROWS(A$1:A1)

将会提供连续的整数且没有前面提到的缺点。

这样,可以使用下面的公式4来代替上文中的公式1:

=INDEX($B$1:$B$10,SMALL(IF($A$1:$A$10="A",ROW($A$1:$A$10)-MIN(ROW($A$1:$A$10))+1),ROWS($1:1)))

向下拖至单元格D3,即可获得满足条件的全部数据,如下图3所示。

图3

注:本技巧整理自excelxor.com,有兴趣的朋友可以研阅原文。

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

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

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

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

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