![Excel INDEX 匹配和 TEXTJOIN 函数](https://linux22.com/image/1625418/Excel%20INDEX%20%E5%8C%B9%E9%85%8D%E5%92%8C%20TEXTJOIN%20%E5%87%BD%E6%95%B0.png)
我正在尝试结合 INDEX-MATCH 和 TEXT 连接函数
我有一家公司 - ABC Ltd,我的工作编号为 15-SER-7170。我维护一个订单详细信息标签(称为服务订单日志)。它看起来像这样:在此处输入图片描述
(A)发票日期......(下)所以#......(C)顾客......(四)物品.....(英)发票开具方#
2015年1月6日...........15-SER-7170.......ABC LTD.送料机.................???...............
现在,对于订单,我已向他们开具了多张发票,并在另一个选项卡(称为 INV LOG)上维护发票详细信息,如下所示:在此处输入图片描述 (A 栏)发票#..........(下)发行日期..........(C)所以# ..........(四)顾客
8122.................2015年1月5日...............15-SER-7170..........ABC有限公司
8123.................2015年1月15日...............15-SER-7170..........ABC有限公司
8124.................2015年2月17日...............15-SER-7170..........ABC有限公司
8125.................2015年2月25日...............15-SER-7170..........ABC有限公司
8126.................2015年2月4日...............14-SER-7158..........ROPE有限公司
8132.................2015年3月25日...............15-PRO7-497.........DANUE有限公司
8133.................2015年3月30日...............15-PRO7-495.........OPTRA有限公司
8135.................2015年3月26日...............15-SER-7170..........ABC有限公司
8136.................2015年3月30日...............15-SER-7170..........ABC有限公司
我正在尝试输入发票# 从 INV LOG 选项卡到发票开具方#在服务订单选项卡上。我使用的公式是 =IFERROR(INDEX('INV LOG'!$C$3:$C$11,MATCH('SERVICE ORDER LOG'!B3,'INV LOG'!$E$3:$E$11,0)),"未开具发票")。但是它只给我一个值 8122。
因此我尝试将 TEXTJOIN 函数与其结合起来并尝试使用公式: =TEXTJOIN(",",TRUE,IF('INV LOG'!E3:E11='SERVICE ORDER LOG'!B3,'INV LOG'!C3:C11),IFERROR(INDEX('INV LOG'!$C$3:$C$11,MATCH('SERVICE ORDER LOG'!B3,'INV LOG'!$E$3:$E$11,0)),"Not invoiced"))
但是,这样返回的所有发票号码均为 8122、8123、8124、8125、8126、8132、8133、8135、8136、8122,而不仅仅是 ABC 有限公司的发票号码。有人可以帮我解决这个问题吗?
答案1
如果有动态数组公式FILTER:
=TEXTJOIN(",",TRUE,FILTER('INV LOG'!C3:C11,'INV LOG'!E3:E11='SERVICE ORDER LOG'!B3,"Not invoiced"))
如果不使用这个数组公式:
=TEXTJOIN(",",TRUE,IF('INV LOG'!E3:E11='SERVICE ORDER LOG'!B3,'INV LOG'!C3:C11,""))
退出编辑模式时,需要使用 Ctrl-Shift-Enter 而不是 Enter 来确认。
第二种方法的缺点是,如果没有匹配项,它将返回一个空白单元格。如果必须这样做,Not Invoiced
则:
=IF(TEXTJOIN(",",TRUE,IF('INV LOG'!E3:E11='SERVICE ORDER LOG'!B3,'INV LOG'!C3:C11,""))<>"",TEXTJOIN(",",TRUE,IF('INV LOG'!E3:E11='SERVICE ORDER LOG'!B3,'INV LOG'!C3:C11,"")),"Not invoiced")