2016-07-13 89 views
1

我想查看是否有更简单的方法通过if(),VBA或数组公式来合并/求和具有相同标题的单元格。我想要的是,如果名称匹配,在一个单元格中将ID与“,”合并在一起,然后将房间和SF一起合并为一行。如何合并两个或多个单元格,如果它们在其他单元格上的内容相同

ID     Name     Rooms Sf 
00000121856000000 Dreadfall Apartments 123  44000 
00000121865000000 Dreadfall Apartments 115  40000 
00000121898000000 Clear Creek    22  11500 
00000121897000000 Clear Creek    22  11500 
00000121541000000 Clear Creek    23  12500 

我希望它看起来像:

|00000121856000000, 00000121865000000     | Dreadfall Apartments | 238 | 84000 
|00000121898000000,00000121897000000, 00000121541000000| Clear Creek   | 67 | 58500 

假设 “ID” 是A1和 “SF” 是D1。非常感谢!

+0

欢迎来到Stack Overflow。 SO不是我网站的代码,也不是教我编码网站的代码。你有什么尝试?如果您使用的是Office 365 Excel 2016,那么很可能可以使用数组公式或两个SUMIFS()完成此操作。否则,您将需要对数据进行排序并使用助手列来执行公式。如果这些都不起作用,那么你坚持使用vba。 –

回答

0

这将为你做!

Sub Macro() 
Dim lngRow As Long 
For lngRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 
If StrComp(Range("B" & lngRow), Range("B" & lngRow - 1), vbTextCompare) = 0 Then 
If Range("C" & lngRow) <> "" Then 
Range("A" & lngRow - 1) = Range("A" & lngRow - 1) & ";" & Range("A" & lngRow) 
Range("C" & lngRow - 1) = Range("C" & lngRow - 1) + Range("C" & lngRow) 
Range("D" & lngRow - 1) = Range("D" & lngRow - 1) + Range("D" & lngRow) 
End If 
Rows(lngRow).Delete 
End If 
Next 
End Sub 
相关问题