VBA-计算单元格范围内每个字符的出现次数

时间:2018-11-03 18:52:46

标签: vba count char

我想创建VBA代码,该代码应该计算范围内每个字母的出现次数(例如A2:A10

通过向您展示其工作方式,将更易于描述: enter image description here

输出应忽略重复项。 我构建的内容如下。这是错误的,但是我坚持了这个小项目,无法前进:

Sub TESTOWEMAKRO()


    Dim i As Long, licznik As Long, znak As String, r As Long



    For i = 2 To 10

        If i = 2 Then
            Range("N" & i) = znak

                For r = i To 10

                    If znak = Range("N" & r + 1) Then
                        licznik = licznik + 1
                        r = r + 1
                    Else
                        r = r + 2
                    End If

                        If r >= 10 Then

                            Range("P" & i).Value = licznik
                            Range("Q" & i).Value = znak
                        End If

                Next r

        'tutaj jesli bedzie powyzej 3

        End If


    Next i

End Sub
    enter code here

1 个答案:

答案 0 :(得分:2)

VBA解决方案

  1. 将范围从Column A复制到Column C
  2. Column C删除重复项
  3. 使用COUNTIF访问Application.WorksheetFunction功能
  4. 遍历Column C中的唯一值

您也可以使用Advanced Filter来执行此操作,该操作将替换步骤 1。 2。

Sub Test()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet2") '<== Update sheet name
Dim LRow As Long, i As Long

LRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row

ws.Range("A1:A" & LRow).Copy ws.Range("C1")
ws.Range("C1:C" & LRow).RemoveDuplicates 1, xlYes
ws.Range("D1") = "Count"

For i = 2 To ws.Range("C" & ws.Rows.Count).End(xlUp).Row
    ws.Range("D" & i) = Application.WorksheetFunction.CountIf(ws.Range("A:A"), ws.Range("C" & i))
Next i

End Sub

非VBA解决方案:Pivot Table

只需突出显示列To Count并插入数据透视表即可。将唯一可用的字段拖到Rows字段和Values字段中。

在照片中,Column C & D由宏生成,您可以在最右侧看到透视的输出和透视的设置。

enter image description here