在 Excel 中创建逗号分隔列表
Create Comma Separated List In Excel
我有两个工作簿,需要将数据从工作簿 1 提取到工作簿 2。实现这一目标的标识符是 empID
现在,对于每个 empID
我需要显示他们工作的位置。所以样本数据看起来像这样
工作簿 1
empID.....姓名....地址...城市...州....邮编
1
2
3
4
5
工作簿2
empID .......locationworked
1 12
2 33
1 11
4 22
3 9
1 55
5 19
2 76
1 99
我已经使用这个公式 return 将每个 empID
的数据添加到不同的单元格
=IFERROR(INDEX($B:$B, SMALL(IF($A=$A:$A, ROW($A:$A)-ROW($A)+1), ROW(1:1))),"" )
但我想创建一个逗号分隔列表并将所有内容放在一个单元格中,就像这样
1 11,12,55,99
2 33,76
等等
有没有办法修改语法,以便像我想要的输出那样创建逗号分隔列表?
在工作簿 2 中,我将此公式添加到 C 列
=IFERROR(VLOOKUP(A1,A2:$C,3,0)&","&B1,B1).
这假设您的数据一直向下到第 50 行。将 $C
替换为您的传播中最后一行 sheet。
如果这是一个变量列表,使用
=INDIRECT("A2:C"&MATCH(TRUE,D:D="",0),1)
代替
A2:$C
但是不要忘记使用 Ctrl + Shift + Enter 将公式设置为数组。
接下来,将此公式复制到所有行。 VLOOKUP 将处理 sheet。然后,您可以使用 VLOOKUP 从您的报告 sheet(我相信在这种情况下是 Sheet 1)中引用此列表。它会自动选择包含 csv 列表的每个员工 ID 的第一个实例。
我想指出的是,虽然 bad_neighbor 的解决方案非常准确并且可重复用于未来的数据更改,但通常最好尽可能避免查找,并将计算结果存储为值,因为这些并不是非常有效,并且往往会减慢 sheet 给定大量数据的可怕事情,例如在过滤/取消过滤时。在旧版本中更糟。
因此,如果此列表格式是手动操作的一部分,并且假设要求每个列表项都按升序排列(根据问题的输出),我将改为执行以下操作:
- 如果工作簿 2 的顺序很重要,请添加行索引(D1 := 1;D2 := D1 + 1;粘贴值)。
- 按 [A 升序,B 降序] 对工作簿 2 进行排序,包括索引(如果存在)。
- 将此公式应用于 C 列 - 查找的填充版本。
C1 := IF(A1=A2,C2&", "&B1,B1)
- 复制粘贴特殊值列 C.
- 从工作簿 1 查找 + 复制粘贴特殊值。
- 可选择根据工作簿 2 中的原始索引 (D) 向后排序。
我有两个工作簿,需要将数据从工作簿 1 提取到工作簿 2。实现这一目标的标识符是 empID
现在,对于每个 empID
我需要显示他们工作的位置。所以样本数据看起来像这样
工作簿 1
empID.....姓名....地址...城市...州....邮编
1
2
3
4
5
工作簿2
empID .......locationworked
1 12
2 33
1 11
4 22
3 9
1 55
5 19
2 76
1 99
我已经使用这个公式 return 将每个 empID
=IFERROR(INDEX($B:$B, SMALL(IF($A=$A:$A, ROW($A:$A)-ROW($A)+1), ROW(1:1))),"" )
但我想创建一个逗号分隔列表并将所有内容放在一个单元格中,就像这样
1 11,12,55,99
2 33,76
等等
有没有办法修改语法,以便像我想要的输出那样创建逗号分隔列表?
在工作簿 2 中,我将此公式添加到 C 列
=IFERROR(VLOOKUP(A1,A2:$C,3,0)&","&B1,B1).
这假设您的数据一直向下到第 50 行。将 $C
替换为您的传播中最后一行 sheet。
如果这是一个变量列表,使用
=INDIRECT("A2:C"&MATCH(TRUE,D:D="",0),1)
代替
A2:$C
但是不要忘记使用 Ctrl + Shift + Enter 将公式设置为数组。
接下来,将此公式复制到所有行。 VLOOKUP 将处理 sheet。然后,您可以使用 VLOOKUP 从您的报告 sheet(我相信在这种情况下是 Sheet 1)中引用此列表。它会自动选择包含 csv 列表的每个员工 ID 的第一个实例。
我想指出的是,虽然 bad_neighbor 的解决方案非常准确并且可重复用于未来的数据更改,但通常最好尽可能避免查找,并将计算结果存储为值,因为这些并不是非常有效,并且往往会减慢 sheet 给定大量数据的可怕事情,例如在过滤/取消过滤时。在旧版本中更糟。
因此,如果此列表格式是手动操作的一部分,并且假设要求每个列表项都按升序排列(根据问题的输出),我将改为执行以下操作:
- 如果工作簿 2 的顺序很重要,请添加行索引(D1 := 1;D2 := D1 + 1;粘贴值)。
- 按 [A 升序,B 降序] 对工作簿 2 进行排序,包括索引(如果存在)。
- 将此公式应用于 C 列 - 查找的填充版本。
C1 := IF(A1=A2,C2&", "&B1,B1)
- 复制粘贴特殊值列 C.
- 从工作簿 1 查找 + 复制粘贴特殊值。
- 可选择根据工作簿 2 中的原始索引 (D) 向后排序。