我有两个工作簿需要将数据从workbook1提取到workbook2。实现此目标的标识符是empID
现在,对于每个empID
,我需要显示他们工作的位置。所以样本数据看起来像这样
的 Workbook1
EMPID .....名称....地址... ...市州....邮编
1
2
3
4
5个
Workbook2
EMPID ....... locationworked
1 12
2 33
1 11
4 22
3 9
1 55
5 19
2 76
1 99
我已使用此公式将数据返回到每个empID
=IFERROR(INDEX($B$2:$B$8, SMALL(IF($A$11=$A$2:$A$8, ROW($A$2:$A$8)-ROW($A$2)+1), ROW(1:1))),"" )
但我想创建一个逗号分隔列表并将所有内容放在一个单元格中,如此
1 11,12,55,99
2 33,76
等
有没有办法修改语法,以便像我想要的输出一样创建逗号分隔列表?
答案 0 :(得分:1)
在工作簿2中,我将此公式添加到C列
=IFERROR(VLOOKUP(A1,A2:$C$50,3,0)&","&B1,B1).
这假设您的数据与第50行一样远。将$C$50
替换为电子表格中最后一行。
如果这是变量列表,请使用
=INDIRECT("A2:C"&MATCH(TRUE,D:D="",0),1)
取代
A2:$C$50
但请不要忘记使用Ctrl + Shift + Enter将公式设置为数组。
接下来,将此公式复制到所有行。 VLOOKUP将处理工作表。然后,您可以使用VLOOKUP从报告表(我相信本案例为表1)中引用此列表。它会自动选择包含csv列表的每个员工ID的第一个实例。
答案 1 :(得分:0)
我想指出,虽然 bad_neighbor 的解决方案非常准确并且可以在未来的数据更改中重用,但通常最好避免查找,并将计算结果存储为值,因为这些不是完全有效的并且考虑到大量数据,例如在过滤/取消过滤时,往往会减慢工作表的速度。在旧版本中情况更糟。
因此,如果此列表格式是手动操作的一部分,并且假设要求每个列表项按升序排列(根据问题的输出),我将改为执行以下操作:
C1 := IF(A1=A2,C2&", "&B1,B1)