在Excel中创建逗号分隔列表

时间:2017-02-03 02:06:18

标签: excel excel-formula formula excel-2013 worksheet-function

我有两个工作簿需要将数据从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

有没有办法修改语法,以便像我想要的输出一样创建逗号分隔列表?

2 个答案:

答案 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 的解决方案非常准确并且可以在未来的数据更改中重用,但通常最好避免查找,并将计算结果存储为值,因为这些不是完全有效的并且考虑到大量数据,例如在过滤/取消过滤时,往往会减慢工作表的速度。在旧版本中情况更糟。

因此,如果此列表格式是手动操作的一部分,并且假设要求每个列表项按升序排列(根据问题的输出),我将改为执行以下操作:

  1. 如果 workbook2 的顺序很重要,请添加行的索引(D1 := 1;D2 := D1 + 1;粘贴值)。
  2. 按 [A 升序,B 降序] 对 workbook2 进行排序,包括索引(如果存在)。
  3. 将此公式应用于 C 列 - 查找的填充版本。
C1 := IF(A1=A2,C2&", "&B1,B1)
  1. 复制粘贴特殊值列 C。
  2. 从工作簿 1 中查找 + 复制粘贴特殊值。
  3. 可选择根据 workbook2 中的原始索引 (D) 进行排序。