Excel连接行

时间:2010-10-18 16:59:43

标签: excel concatenation

我有这个excel工作表

A          B          c   
foo1       joo1       loo1
foo1       joo2       loo2
foo2       joo3       loo3
foo2       joo4       loo4
foo2       joo5       loo5

现在我想要这个

A          B                  c   
foo1       joo1, joo2         loo1, loo2
foo2       joo3, joo4, joo5   loo3, loo4, loo5

我该怎么做,最好是用GUI?

3 个答案:

答案 0 :(得分:2)

如果你愿意写一个宏...

单击第一个“foo1”单元格并运行它。它将加入foo1,然后加入foo2,直到它击中空白单元格。如果你从来没有写过宏,也许我们可以带你去。

Sub JoinThem()
   ' Go until blank cell (first click at upper left of range)
   Do While ActiveCell.Value <> ""
      ' If this row macthes the next row
      If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
         ' Join first column overwriting the values
         ActiveCell.Offset(0, 1) = ActiveCell.Offset(0, 1).Value & ", " & ActiveCell.Offset(1, 1).Value
         ' and Join the second column too
         ActiveCell.Offset(0, 2) = ActiveCell.Offset(0, 2).Value & ", " & ActiveCell.Offset(1, 2).Value
         ' Since we placed the data into one row get rid of the row
         ActiveCell.Offset(1, 0).EntireRow.Delete
      Else
         ' Next row does not match, move down one
         ActiveCell.Offset(1, 0).Select
      End If
   Loop 
End Sub

答案 1 :(得分:0)

很高兴你找到了解决方案。我还推荐了一个数据透视表。无需编码,只需拖放即可将字段拖放到“行”框中。然后让Excel为您过滤掉重复项。

答案 2 :(得分:0)

您也可以使用Salstat2和以下步骤

1-使用文件菜单中的打开选项导入数据

2-在脚本面板中你应该写

# getting the colums
res= group()
res.xdata=  [ grid.GetCol('A')]
res.ydata=  [ grid.GetCol('B'), grid.GetCol('C')]
res.yvalues= ['concat(B)','concat(C)'] # concat is a function used to concatenate the data
report.addPage() # adding a new sheet to put the results
for lis in res.getAsRow():
   report.addRowData( lis) # adding the results row by row

另外3个信息here