一、案例
如下图所示,要求在B2:B9内填充序号,每个城市编号从1开始,相同城市编号连续。效果如F2:F9所示。
二、解决方法
方法一:IF+ISBLANK函数
在B2单元格输入“1”,在B3单元格输入公式
=IF(ISBLANK(A3),B2+1,1),拖动填充柄向下复制公式。
公式解析:
(1)取消A2:A9合并单元格后,如下图所示,可以看到本例中每个合并单元格的文本实际只出现合并单元格的第1行。
(2)ISBLANK函数用于判断单元格是否为空值,若为空值,返回True。根据解析(1),A3单元格为空值,ISBLANK(A3)返回True。
(3)IF(ISBLANK(A3),B2+1,1)指如A3单元格为空值,则返回B2+1,否则返回1。如A3单元格为空值,说明为同一城市,只需要在上一行序号基础上加1即可;如A3不为空值,说明为不同城市,那么从1开始编号。
方法二:MATCH函数
在B2单元格输入公式
=ROW(2:2)-MATCH("座",$A$2:$A2,1),拖动填充柄向下复制公式。
公式解析:
(1)MATCH("座",$A$2:$A2,1)指在$A$2:$A2中查找“座”。“座”是一个很大的汉字,大部分汉字比它小。如下图所示,当我们在Excel中比较“座”和“北京”的大小时,Excel返回True,也就是说Excel认为“座”大于“北京”。
Excel中的汉字以拼音首字母在26个英文字母中的顺序进行排序。“座”的拼音首字母“Z”大于“北京”的首字母“B”,因此“座”大于“北京”。
(2)MATCH("座",$A$2:$A2,1)在$A$2:$A2中查找“座”,但是A列并没有“座”字。MATCH函数的第3个参数“1”指当找不到查找值时,返回小于查找值的最大值,此时查找区域必须按升序排列。具体到本例,A2:A9中的城市无需按升序排列,MATCH函数会返回$A$2:$A2中最后一个有文本的单元格所在的位置。MATCH返回值如下图所示:
(3)ROW(2:2)指返回引用的行号“2”。当公式向下复制时,会依次返回3、4、5、6等值。