首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >宏用于多行文本

宏用于多行文本
EN

Stack Overflow用户
提问于 2017-02-13 01:42:20
回答 1查看 87关注 0票数 0

我有一个excel表,其中在一列标题名'LOTZ‘多行商品名称列在单格中(货物数量变化,例如,第1天有7件商品,第2天可能有1件好)。我需要创造前50的商品在全年与各自的计数在单独的一页。

示例:-

在新插入的工作表中需要的结果:-

我可以使用数据选项卡‘文本到列’,但不知道如何通过宏代码进行合并。

任何帮助都将不胜感激。

谢谢莫妮卡

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 02:29:13

试试这个:

代码语言:javascript
运行
复制
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行中找到其标头,则可以使用以下方法:

代码语言:javascript
运行
复制
For Each r In Worksheets("Sheet1").UsedRange.Find("LOTZ").EntireColumn.SpecialCells(xlCellTypeConstants).Offset(1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42195437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档