Vba 用于多行文本的宏
我有一张excel表格,其中一列标题名称“LOTZ”多行商品名称列在单个单元格中(商品数量变化,例如第1天有7件商品,第2天可能有1件商品)。我需要创建前50名的商品在整个一年中与各自的计数在单独的表 示例:- 我希望在新插入的工作表中得到的结果:- 我能够使用数据选项卡“文本到列”,但不知道如何通过宏代码进行合并 我们将非常感谢您的帮助 谢谢monika试试这个:Vba 用于多行文本的宏,vba,excel,Vba,Excel,我有一张excel表格,其中一列标题名称“LOTZ”多行商品名称列在单个单元格中(商品数量变化,例如第1天有7件商品,第2天可能有1件商品)。我需要创建前50名的商品在整个一年中与各自的计数在单独的表 示例:- 我希望在新插入的工作表中得到的结果:- 我能够使用数据选项卡“文本到列”,但不知道如何通过宏代码进行合并 我们将非常感谢您的帮助 谢谢monika试试这个: Sub consolidate() Dim r As Range, dict As Object, lotz
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)
谢谢,当LOTZ工作表的位置发生变化时,您能建议一种方法吗。意味着查找标题LOTZ并在列上运行,同时将计数按降序排序代码也给出标题计数,即LOTZ=1@monikasingh我认为编辑的代码满足了您的要求。是的,它做得很好-最后一个输入是我们可以将添加的工作表命名为LOTZ吗