2017-02-13 5 views
0

У меня есть лист excel, где в одном столбце Название заголовка «LOTZ» указано в одной ячейке (изменение количества товаров, например, в день 1 есть 7 товаров & день 2 может иметь 1 товар). Мне нужно создать Top 50 товаров за весь год с соответствующим количеством в отдельном листе.Макрос для многострочного текста

Пример: -

enter image description here

Результат Я хочу, чтобы в новом вставленной листе: -

enter image description here

я могу использовать вкладку DATA 'текст в колонку' но не знаю, как консолидироваться с помощью макрокода.

любая помощь будет очень признательна.

благодаря Monika

ответ

1

Попробуйте это:

Sub consolidate() 
    Dim r As Range, dict As Object, lotz 
    Set dict = CreateObject("Scripting.Dictionary") 
    For Each r In Worksheets("Sheet1").UsedRange.Columns("C").Offset(1).Cells 
     For Each lotz In Split(r.value, vbLf) 
      dict(lotz) = dict(lotz) + 1 
     Next 
    Next 
    With Worksheets.Add 
     .Range("A1:B1").value = Array("LOTZ", "Count") 
     .Range("A2:A" & dict.Count + 1).value = Application.Transpose(dict.Keys) 
     .Range("B2:B" & dict.Count + 1).value = Application.Transpose(dict.Items) 
     .Range("A2:B" & dict.Count + 1).Sort .Range("B2"), xlDescending 
    End With 
End Sub 

EDIT

Если столбец lotz не известен, и вы хотите, чтобы найти его заголовок в строке 1, вы можете использовать это вместо того, чтобы:

For Each r In Worksheets("Sheet1").UsedRange.Find("LOTZ").EntireColumn.SpecialCells(xlCellTypeConstants).Offset(1) 
+0

Спасибо, что вы можете указать способ изменения позиции листа LOTZ. Средство находит заголовок LOTZ и запускается в столбце –

+0

Также сортирует счетчик в порядке убывания –

+0

Код также дает количество заголовков i.e LOTZ = 1 –

Смежные вопросы