我有一个excel表,其中在一列标题名'LOTZ‘多行商品名称列在单格中(货物数量变化,例如,第1天有7件商品,第2天可能有1件好)。我需要创造前50的商品在全年与各自的计数在单独的一页。
示例:-
在新插入的工作表中需要的结果:-
我可以使用数据选项卡‘文本到列’,但不知道如何通过宏代码进行合并。
任何帮助都将不胜感激。
谢谢莫妮卡
发布于 2017-02-13 02:29:13
试试这个:
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)
https://stackoverflow.com/questions/42195437
复制相似问题