合并发票号码太难了,用公式想破脑,真心疼做会计的你原始数据,合并后要这种效果,发票号码不连续的用逗号隔开,连续的用小值和值分隔符号是横杠。这种用公式真的想破脑,实在太麻烦了,用了好几个辅助列才搞定。
今天,分享一个简化版的,发票号码只有一个或者连续的,这种就好处理很多。
现在分步说明:
如果供应商只有一个,就返回单个发票号码。用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,"")),"")
简化版的到这里就解决了,原始版的其实再多增加几个条件就行,这里就不再说明,有兴趣的可以动下脑子。