如何对“NAME”列中具有相同值的记录进行分组?

时间:2013-08-08 14:52:34

标签: excel

我的数据

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 个答案:

答案 0 :(得分: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:等......

enter image description here

答案 1 :(得分:0)

格式化更有意义。还有一些额外的信息,你想要复制到哪里以及你的尝试将是有帮助的。

我建议使用VBA而不是公式。如果您不了解VBA,我建议您在完成手动复制数据的步骤时录制宏。然后,您可以查看由Excel创建的代码,您只需要通过相对地址将逻辑级数替换为绝对单元格地址引用。赶紧去看看,然后可以自由地询问是否有你坚持的具体细节。

答案 2 :(得分:0)

假设a1在C2中,进入D2 put:

=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和Paste Special Values复制到顶部。
  7. 在ColumnC中没有任何内容替换,,
  8. 找到Row1中的某个位置以放置=IF(RIGHT(C1,1)=",",LEFT(C1,LEN(C1)-1),C1)并向下复制。
  9. 将该列和Paste Special Values复制到ColumnC的顶部。
  10. 删除“那个”列。
  11. 添加列标签以适应。

答案 3 :(得分:0)

在不使用VBA和使用直接excel公式的情况下,这有点可行。

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

enter image description here (无论数据在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

  3. 对应的第一个name
  4. 列H-L:您可以将此公式放入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),"")

  5. 这里有图片帮助:

    F栏: enter image description here

    G栏: enter image description here

    H-L栏: enter image description here