excel学习库

excel表格_excel函数公式大全_execl从入门到精通

排序问题案例分析:要求相同订单号序号相同

又遇到网友问这样一个计算序号的问题,要求对如图的台账明细填写序号,相同订单号的序号相同。

01. EXCEL2021及以上

如果EXCEL是2021版本以上,可以使用UNIQUE函数来获取去重后的订单号数组,再用当前订单号去查在UNIQUE结果中的排位,得到序号。

A2=MATCH(C2,UNIQUE($C$2:$C$10),0)

配合条件格式,还可将不同订单号进行交叉填充背景色以示区分。

02. EXCEL2021以下

如果EXCEL是低版本,就没法用UNIQUE函数了。我们重新来思考一下解决方案。

①如果订单号唯一,就是正常的序号+1。即,取上面的行中最大序号+1。这个好解决,考虑一下“A$1:A1”下拉的应用(绝对引用与相对引用,之前多次提到,最近一篇可参见《不规则合并单元格数据填充》)。此类解决方案:MAX(A$1:A1)+1

②但是订单号不唯一呢?那就取上面相同订单号的序号,反正都一样。

以A3为例,输入=IF(B1:B2=B3,A1:A2),结果得到2个单元格值“FALSE;0”(FALSE也是0。之所以看到2个单元格的值,是因为磊哥使用的版本为2021,具备自动溢出功能;低版本未使用组合键Ctrl+Shift+Enter完成输入的话,只能看到"#VALUE!")。

可以套一个MAX函数来获取这一列数组的最大值(最小值函数MIN、平均值函数AVERAGE都可以,反正结果都一样),如此处MAX(IF(B1:B2=B3,A1:A2))结果就是0。

套用一句话,问题多的小明要问了——A3序号应该是1啊,为什么是0?嗯,这是因为A2目前还是空的呗。A2可以用方法①获得“1”(因为C2在C1:C2区是唯一值),再往下看看就懂了。

③那订单号唯一与否,这个就可以交给COUNTIF函数了。

经过分步思考,可以得到这样一个公式:

A2=IF(COUNTIF(C$1:C2,C2)=1,MAX(A$1:A1)+1,MAX(IF($C$1:$C1=C2,A$1:A1)))

公式要从第一行开始引用起,才能保证A2也能与下面单元格公式相同,一次性搞定。

公式的计算过程可以看看动图,也请大家养成通过“公式求值”来查看公式分步计算过程的习惯:

A2的计算过程:

A3的计算过程:

以上,我们又完成了一种情况的序号公式编写。也可以看出,EXCEL版本还是要尽量保持较新的,新版本新增的函数会减轻工作负担。在工作环境无特殊要求的情况下,2016以下版本不建议继续使用。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接