如何基于相同的sku来协调不同的单元格

我有一个csv 2列

sku,color 001,blue 001,red 001,pink 001,yellow 002,blue 002,red 002,pink 002,yellow etc.. 

我如何创build一个新的单元格,并结合基于SKU编号的颜色? 喜欢这个:

 sku,combinedColors 001,"blue,red,pink,yellow" 002,"blue,red,pink,yellow" 

谢谢

没有一个公式可以做到这一点,macros观是最好的方法。 但是有两种方法可以做到这一点。

在Excel中打开CSV,您必须对列A进行升序/降序sorting。

然后在C2中,添加此公式并将其拖下

 =IF(A2<>A1,B2,C1 & "," & B2) 

在D2中,添加此公式并将其拖下

 =IF(A2<>A3,CONCATENATE(A2,",""",C2,""""),"") 

将自动filter放在第1行,然后在D列中selectNON BLANKS。然后可以随意复制D列!

你可以用VBAmacros做这个。 要input这个macros(Sub), alt-F11打开Visual Basic编辑器。 确保您的项目在“项目浏览器”窗口中突出显示。 然后,从顶部菜单中select插入/模块,然后将下面的代码粘贴到打开的窗口中。

您可能需要根据源数据的位置以及您希望写入结果的位置进行一些更改。 该macros假定您的源数据在列A:B和标题行,并且您的结果将被写入列D:E

我还假设,因为这是用Excel标记的,你已经将csv数据导入到excel中,并且想要两列中的结果。

要使用这个macros(Sub), alt-F8打开macros对话框。 按名称selectmacros。

 Option Explicit Sub ConcatColorsBySKU() Dim colSKU As Collection Dim vSrc As Variant, vRes() As Variant Dim I As Long, J As Long Dim rRes As Range vSrc = Range("A1", Cells(Rows.Count, "A").End(xlUp)).Resize(columnsize:=2) Set rRes = Range("D1") 'Unique SKU's Set colSKU = New Collection On Error Resume Next For I = 2 To UBound(vSrc) colSKU.Add Item:=CStr(vSrc(I, 1)), Key:=CStr(vSrc(I, 1)) Next I On Error GoTo 0 'Results Array ReDim vRes(1 To colSKU.Count + 1, 1 To 2) vRes(1, 1) = "SKU" vRes(1, 2) = "Combined Colors" For I = 1 To colSKU.Count vRes(I + 1, 1) = colSKU(I) For J = 2 To UBound(vSrc) If vSrc(J, 1) = vRes(I + 1, 1) Then _ vRes(I + 1, 2) = vRes(I + 1, 2) & ", " & vSrc(J, 2) Next J vRes(I + 1, 2) = Mid(vRes(I + 1, 2), 2) Next I Set rRes = rRes.Resize(UBound(vRes, 1), UBound(vRes, 2)) rRes.NumberFormat = "@" rRes = vRes rRes.EntireColumn.AutoFit End Sub