-1

Я являюсь основным пользователем Excel, я работаю с рабочей книгой Excel в версии 2016 года, у меня следующий запрос:

У меня есть 9 листов в книге Excel и специальный столбец на каждом листе, который отображает серию ссылочных номеров в виде:

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 ответ1

0

На основании предоставленной вами информации, это делает 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 каждого, я использовал разные значения, чтобы показать, что они рассчитывают правильно.

Как добавить VBA в MS Office?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .