合并发票号码太难了,用公式想破脑,真心疼做会计的你

某粉丝要合并上千行发票号码,工作量实在太大了,于是找卢子报名了VIP会员,并求助简单的方法。

原始数据,合并后要这种效果,发票号码不连续的用逗号隔开,连续的用最小值和最大值分隔符号是横杠。这种用公式真的想破脑,实在太麻烦了,用了好几个辅助列才搞定。

今天,卢子就分享一个简化版的,发票号码只有一个或者连续的,这种就好处理很多。

现在分步说明:

如果供应商只有一个,就返回单个发票号码。用COUNTIF判断次数。

IF(COUNTIF(A:A,A2)=1,B2,

如果供应商多个,就返回对应的第一个和最后一个发票。第一个用VLOOKUP,最后一个用LOOKUP。

VLOOKUP(A2,A:C,2,0)

LOOKUP(1,0/(A2=A:A),B:B)

将这几个公式合并起来,结果是没问题,不过只要在第一个供应商显示,其他显示空白。

=IF(COUNTIF(A:A,A2)=1,B2,VLOOKUP(A2,A:C,2,0)&"-"&LOOKUP(1,0/(A2=A:A),B:B))

判断首次出现,可以用COUNTIF区域混合引用。

=COUNTIF(A$2:A2,A2)=1

不过这里有一个特点,直接利用上下行内容不一样就可以。

=A2<>A1

再将所有公式结合起来就搞定。

=IF(A2<>A1,IF(COUNTIF(A:A,A2)=1,B2,VLOOKUP(A2,A:C,2,0)&"-"&LOOKUP(1,0/(A2=A:A),B:B)),"")

汇总金额这个很简单,SUMIF条件求和就行。

=IF(A2<>A1,SUMIF(A:A,A2,C:C),"")

再顺便说下,如果供应商一样,就将所有发票号码全部用逗号隔开。

先用IF判断供应商是否一样,如果一样就返回发票号码,否则返回空白。这是多单元格数组公式,并不能直接在一个单元格显示结果。

=IF($A$2:$A$13=A2,$B$2:$B$13,"")

再用TEXTJOIN将结果合并起来,输入公式后要按Ctrl+Shift+Enter结束。

=TEXTJOIN(",",1,IF($A$2:$A$13=A2,$B$2:$B$13,""))

再嵌套IF显示在第一个单元格。

=IF(A2<>A1,TEXTJOIN(",",1,IF($A$2:$A$13=A2,$B$2:$B$13,"")),"")

简化版的到这里就解决了,原始版的其实再多增加几个条件就行,这里就不再说明,有兴趣的可以动下脑子。

推荐:9个Excel常用函数,这样学最快!

上文:后来,我用这个方法搞定了刷卡时间差

合并发票号码你以前用什么方法解决?

作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)

(0)

相关推荐