-2

我的数据

NAME    QTY     LOCATION                
abc     3       a1                      
abc     3       a3                      
abc     3       a4                      
cdf     4       c5                               
cdf     4       c7                              
cdf     4       c1                              
cdf     4       c9                              
ghi     6       g12                             
ghi     6       g5                              
ghi     6       g17                             
ghi     6       g6                              
ghi     6       g89                             
ghi     6       g1

我想要的结果

NAME    QTY     LOCATION
abc     3       a1, a3, a4
cdf     4       c5, c7, c1, c9
ghi     6       g12, g5, g17, g6, g89, g1

如何使用 Excel 中的函数自动执行此操作?

4

4 回答 4

2

我已将 C 列创建为“助手”以连接所有相关位置。然后我使用 D 列只显示最后一个条目并“过滤”中间结果。

至于公式:

  • C1:=B1
  • C2:=IF(A2=A1,C1&", "&B2,B2)
  • C3:=IF(A3=A2,C2&", "&B3,B3)
  • C4:等等……

  • D1:=IF(A1=A2,"",C1)

  • D2:等等……

在此处输入图像描述

于 2013-08-08T15:27:06.187 回答
0

使用格式更有意义。关于您想要复制到哪里以及从哪里复制的一些额外信息以及您的尝试会很有帮助。

我建议为此使用 VBA 而不是公式。如果您不了解 VBA,我建议您在执行手动复制数据的步骤时录制宏。然后,您可以查看 Excel 创建的代码,您只需将绝对单元格地址引用替换为通过相对地址的逻辑级数。试一试,然后随意询问是否有您坚持的细节。

于 2013-08-08T15:05:26.747 回答
0

假设a1在 C2 中,放入 D2:

=IF(COLUMN()<COUNTIF($A:$A,$A2)+4,IF($A2=$A3,INDIRECT("$c"&ROW()+COLUMN()-4),""),"")

  1. 上下复制以适应(比如 ColumnZ)。
  2. 选择整个工作表并在顶部复制粘贴特殊值。
  3. 在 C2 中放置=A1=A2并复制下来。
  4. 筛选 ColumnC 以选择 TRUE 并删除所有可见行。
  5. 在 C1 中放置=D1&","&E1&","&F1&","&G1&","&H1&","&I1等以适应并复制下来以适应。
  6. 复制 ColumnC 并将特殊值粘贴到顶部。
  7. 替换,,为 ColumnC 中的任何内容。
  8. 在第 1 行中的某个位置放置=IF(RIGHT(C1,1)=",",LEFT(C1,LEN(C1)-1),C1)并复制下来。
  9. 复制该列并将特殊值粘贴到 ColumnC 的顶部。
  10. 删除“那个”列。
  11. 添加列标签以适应。
于 2013-08-08T15:34:31.810 回答
0

在不使用 VBA 和使用直接 excel 公式的情况下,这在某种程度上是可能的。

我在 A、B 和 C 列中使用了您的测试数据,然后我将解决方案放在 EL 列中,这是一张图片:

在此处输入图像描述 (无论数据在 A 列中的顺序如何,这都应该有效,这就是为什么我放错了一行)

该解决方案唯一的自动化部分是您必须在 E 列中手动输入名称。无论您在此处输入什么名称,右侧的数据都会自动填充QTYLocations

这有点复杂,但无论如何这里是我使用的 3 个公式:

  1. F列:=OFFSET($B$1,MATCH(E1,A:A,0),0) 这将获取QTY

  2. G列:=OFFSET($C$1,MATCH($E1,$A$1:$A14,0)-1,0) 这将得到第一个location对应的name

  3. HL 列:此公式可以放入 H 列,然后向右填写。它将抓取相对于左侧的下一个位置。=IFERROR(OFFSET($C$1,MATCH($E1,INDIRECT("$A"&MATCH(G1,$C$1:$C14,0)+1&":$A$14"),0)+MATCH(G1,$C$1:$C14,0)-1,0),"")

这里的图片来帮助:

F栏: 在此处输入图像描述

G栏: 在此处输入图像描述

HL 栏: 在此处输入图像描述

于 2013-08-08T16:17:55.270 回答