首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA复制和统计特定列的字数并将其移动到另一个工作表中

VBA复制和统计特定列的字数并将其移动到另一个工作表中
EN

Stack Overflow用户
提问于 2015-06-09 04:57:11
回答 2查看 165关注 0票数 0

我试图实现的是一个VBA代码来复制和计数的所有字在一列,并将其移动到另一张表排序的高频较低。行数可以不同。如下所示:

代码语言:javascript
复制
Column1:
Finance
SAP
Finance
HR
Design
Design
HR
People
SAP
SAP

新工作表:

代码语言:javascript
复制
SAP 3
Finance 2
Design 2
SAP 2
HR 2
People 1

你知道怎么做吗?非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2015-06-09 05:20:27

我认为测试方法将是创建数据透视表,并添加行标签和列计数。

http://www.thespreadsheetguru.com/blog/2014/9/27/vba-guide-excel-pivot-tables

这将让您了解如何创建pivot并执行必要的操作。

谢谢,

票数 1
EN

Stack Overflow用户

发布于 2015-06-09 06:22:58

这将会起作用,只需在运行以下命令后对B列中的“List”工作表进行排序:

代码语言:javascript
复制
Sub Count_Sort()
Dim lastRow As Integer
Dim ws As String
Dim c As Range

ws = ActiveSheet.Name
lastRow = LastUsedRow
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$A$" & lastRow).RemoveDuplicates Columns:=1, Header:=xlNo
ActiveSheet.Name = "List"
Sheets(ws).Activate
Set c = Range("A1")
Set d = Sheets("List").Range("A1")
Do While Not IsEmpty(c)
    Do While Not IsEmpty(d)

        If c.Value = d.Value Then

            d.Offset(0, 1).Value = d.Offset(0, 1).Value + 1
            Set d = d.Offset(1, 0)
            Exit Do
        End If
        Set d = d.Offset(1, 0)
    Loop
    Set c = c.Offset(1, 0)
    Set d = Sheets("List").Range("A1")
Loop
End Sub


Public Function LastUsedRow()
LastUsedRow = [A65536].End(xlUp).Row
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30718944

复制
相关文章

相似问题

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