多行文字的宏

时间:2017-02-13 01:42:20

标签: excel vba excel-vba

我有一张excel表,在一栏中标题名称' LOTZ'多行商品名称列在单个单元格中(商品数量变化,例如第1天有7个商品,第2天可能有1个商品)。我需要在全年创建前50名商品,并在单独的表格中分别计算。

示例: -

enter image description here

我想要的新插页:

enter image description here

我可以使用DATA标签' text to column'但不知道如何通过宏代码进行整合。

任何帮助都将受到高度赞赏。

感谢monika

1 个答案:

答案 0 :(得分: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)