Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel连接行_Excel_Concatenation - Fatal编程技术网

Excel连接行

Excel连接行,excel,concatenation,Excel,Concatenation,我有这个excel工作表 A B c foo1 joo1 loo1 foo1 joo2 loo2 foo2 joo3 loo3 foo2 joo4 loo4 foo2 joo5 loo5 现在我想要这个 我如何做到这一点,最好使用GUI?如果您愿意编写宏 单击第一个foo1单元格并运行此操作。它将先加入foo1,然后加入foo2,直到

我有这个excel工作表

A          B          c   
foo1       joo1       loo1
foo1       joo2       loo2
foo2       joo3       loo3
foo2       joo4       loo4
foo2       joo5       loo5
现在我想要这个


我如何做到这一点,最好使用GUI?

如果您愿意编写宏

单击第一个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
很高兴你找到了解决办法。我还推荐了一个透视表。无需编码,只需将字段拖放到行框中即可。然后让Excel为您过滤出重复项。

您也可以使用,并执行以下步骤

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-更多信息

Uff,我认为这不可能那么容易,而且它也破坏了分离数据单元的用途。我能想到的唯一一件事就是为你创造一个makro。请问您是否需要更频繁地执行此操作,或者只执行一次,在这种情况下,涉及多少数据?因此,我们可以说它是否值得一次,大约4000行,第一行有1-5个副本。您是否在寻找编码解决方案?如果是这样的话,请为您喜欢的编程语言添加标记。我使用C和NPOI对Excel文件做了很多工作。如果不是,在类似这样的网站上提问可能更合适。我计划将数据移动到Mysql数据库。也许在那里写一个查询会更容易。到底是什么逻辑决定了哪一组旧行出现在哪一新行中?嗨,皮特,以前从未写过宏。然而,从代码的外观来看,我做了一些类似的事情——基本上我对第一列应用了一个唯一的过滤器,复制了第二列,删除了复制的单元格,删除了过滤器,重新使用了第二列,重新应用了过滤器,等等->直到第二列中没有更多填充的单元格。最后,我有5列并排放置,然后将它们连接起来。结果非常完美——虽然不是在编程!谢谢你的帮助。我很高兴它成功了,你至少可以把我的答案当作一个模型。
# 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