计算子字符串出现的次数

计算子字符串出现的次数

我是一名 Excel 基础用户,正在处理 2016 版的 Excel 工作簿,有以下查询:

我在一本 Excel 书中有 9 个工作表,每个工作表中都有一个特定的列,其中显示一系列参考编号,如下所示:

GAD5-CDC-T2-349-230315-DWG-PP-STR-0114-0
GAD5-MGM-T2-349-230315-DWG-PP-STR-0114-0
GAD5-CDC-T2-349-230315-DWG-SD-STR-0114-0
GAD5-MGM-T2-363-250315-DWG-PP-STR-0119-0
GAD5-CDC-T2-363-250315-DWG-DD-STR-0119-0
GAD5-CDC-T2-363-250315-DWG-BD-STR-0119-0
GAD5-CDC-T2-259-51-050515-DWG-FD-S-0233-00
GAD5-CDC-T2-259-51-050515-DWG-TD-S-0233-00
GAD5-MGM-T2-259-51-050515-DWG-LD-S-0233-00
GAD5-MGM-T3-119-25-DDS-ST-1568-02
GAD5-MGM-T3-119-25-DDS-RT-1568-02
GAD5-MGM-T3-119-25-DDS-OT-1568-02

等等,请注意:这些数字不遵循任何顺序。我想计算倒数第二个数字出现的次数。在这个例子中

  • 0114 是 3 次
  • 0119 是 3 次
  • 0233 是 3 次 &
  • 1568 是 3 倍

我想用公式计算这个,并将结果作为计数器放在任何其他单元格中。如果您能帮助我,我将不胜感激。

答案1

根据您提供的信息,这个 VBa 可以做到这一点。我知道您没有要求使用 VBa,但我写了这个以防您没有得到其他答案,它可能会帮助其他人(而且它有效!)

您需要将 B 列格式化为文本类型(假设 B 列是您想要结果的位置)

我假设数据将按照您的例子连续。

Sub WalkThePlank()

Dim startRow As Integer
startRow = 1                        'Update this cap'ain as ye like

Dim column As String
column = "A"                        'The column for ye data

Dim resultsColumn As String
resultsColumn = "B"                 'This be the column you want the results!

Dim resultsColumnCount As String
resultsColumnCount = "C"                 'This be the column you want the results!


Do While (Range(column & startRow).Value <> "")

    Dim content As String
    content = Range(column & startRow).Value

    Dim splitty() As String
    splitty = Split(content, "-")

    Dim resultDigit As String ' must be string as your values start with a 0
    resultDigit = splitty(UBound(splitty) - 1)

    Dim resultsRow As Integer
    resultsRow = 1

    Do While (Range(resultsColumn & resultsRow).Value <> "")

        Dim resultsVal As String
        resultsVal = Range(resultsColumn & resultsRow).Value

        If resultsVal = resultDigit Then
            Range(resultsColumnCount & resultsRow).Value = Range(resultsColumnCount & resultsRow).Value + 1
        End If

        If resultsVal <> resultDigit And Range(resultsColumn & resultsRow + 1).Value = "" Then
            Range(resultsColumn & resultsRow + 1).Value = resultDigit
            Range(resultsColumnCount & resultsRow + 1).Value = 0
        End If


        resultsRow = resultsRow + 1
    Loop


    If (Range(resultsColumn & "1").Value = "") Then
        Range(resultsColumn & "1").Value = resultDigit
        Range(resultsColumnCount & "1").Value = 1
    End If

startRow = startRow + 1
Loop


End Sub

在此处输入图片描述

在此处输入图片描述

数据中唯一的区别是我没有使用每种数据 3 个,而是使用了不同的值来显示其计数正确。

如何在 MS Office 中添加 VBA?

相关内容