2017-02-13 17 views
0

我在一列中有一個excel表單頭名稱'LOTZ'多行商品名稱列在單個單元格中(商品數量變化例如第1天有7個商品&第2天可能有1個很好)。我需要在全年創建前50名商品,並分別單獨計算。用於多行文本的宏

例子: -

enter image description here

結果,我希望在新的插頁: -

enter image description here

我能夠使用數據選項卡 '文字列'但不知道如何通過宏代碼進行合併。

任何幫助將不勝感激。

感謝莫妮卡

回答

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 

編輯

如果lotz列不知道,你想找到它的第1行頭,你可以用這個來代替:

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

謝謝你能提出一種方式,當LOTZ表的位置變化。意思是找到標題LOTZ並在列 –

+0

上運行同樣按降序排列 –

+0

代碼也給出標題計數,即LOTZ = 1 –