Как объединить значения из нескольких строк в одну строку с помощью запятой-разделителя

Как объединить значения из нескольких строк в одну строку с помощью запятой-разделителя

У меня есть файл Excel, в котором в одном столбце перечислены артикулы продуктов, а в другом — URL-адреса изображений продуктов. Проблема в том, что в файле есть несколько строк для одного и того же продукта...

http://i.imgur.com/mVn1EYa.jpg

...когда CMS, которую я использую в своем магазине, может читать только такой импорт:

http://i.imgur.com/nQNCjci.jpg

Я бы сделал это вручную, но есть сотни продуктов, каждый с несколькими ссылками на изображения. По сути, мне нужно иметь только один SKU001 (SKU002, SKU003 и т. д.) и объединить его соответствующие ячейки столбца B в одну ячейку со всеми значениями, разделенными запятой. Есть ли способ сделать это?

решение1

Допустим, у нас есть данные вЛист1. SKU указаны в столбцеАиБможет содержать любые данные. SKU сортируются:

введите описание изображения здесь

Следующий макрос создаст реорганизованные данные вЛист2:

Sub ReOrganizer()
   Dim s1 As Worksheet, s2 As Worksheet
   Dim N As Long, i As Long, K As Long
   Dim v1 As String, v2 As String
   Set s1 = Sheets("Sheet1")
   Set s2 = Sheets("Sheet2")
   K = 1
   N = Cells(Rows.Count, "A").End(xlUp).Row
   v1 = s1.Cells(2, 1).Value
   v2 = s1.Cells(2, 2).Value

   For i = 3 To N
      vn1 = s1.Cells(i, 1).Value
      vn2 = s1.Cells(i, 2).Value
      If vn1 = v1 Then
         v2 = v2 & "," & vn2
      Else
         s2.Cells(K, 1) = v1
         s2.Cells(K, 2) = v2
         v1 = vn1
         v2 = vn2
         K = K + 1
      End If
   Next i

   s2.Cells(K, 1) = v1
   s2.Cells(K, 2) = v2

End Sub

введите описание изображения здесь

решение2

Думаю, у меня есть решение без макросов.

сырой

Какие фильтры отфильтровано

в C2 введите =IF(A2=A1,C1&","&B2,B2)

Затем в D2 введите =COUNTIF(C3,B3)

И заполните одну строку под вашей таблицей.

C col объединяется со строкой выше, если это тот же продукт, или начинает новую цепочку, если это новый продукт.

D col находит конец цепочки (проверяя, является ли строка ниже новой цепочкой)

Попробуйте, пожалуйста, и скажите, работает ли это :)

Связанный контент