Используя Microsoft Excel, как проверить общее количество вхождений строки в столбце Excel со многими ячейками, разделенными запятыми?

#excel #vba

Вопрос:

Используя Microsoft Excel, как проверить общее количество вхождений строки в столбце Excel со многими ячейками, разделенными запятыми?

Данные, как показано ниже: введите описание изображения здесь

Ответ №1:

Похоже, это работает (при условии отсутствия пробелов между запятой и числом):

 =SUM((LEN("," amp; DataColumn amp; ",")-LEN(SUBSTITUTE("," amp; DataColumn amp; ",","," amp; ValueToLookFor amp; ",","")))/LEN("," amp; ValueToLookFor amp; ","))  
 

Или если ваши данные находятся в таблице, а значение, которое нужно искать, жестко закодировано:

 =SUM((LEN("," amp; Table1[Column1] amp; ",")-LEN(SUBSTITUTE("," amp; Table1[Column1] amp; ",",",1300.01,","")))/LEN(",1300.01,"))
 

Комментарии:

1. это сработало, спасибо!

2. =СУММА((LEN(«,» amp; Real_Time_Bidding_TCs!$F$2 : Real_Time_Bidding_TCs!$F$20 amp; «,») — LEN(ЗАМЕНИТЬ(«,» amp; Real_Time_Bidding_TCs!$F$2 : Real_Time_Bidding_TCs!$F$20 amp; «,»,»,» amp; D2 amp; «,»,»»)))/ЛЕН(«,» amp; D2 amp; «,»))

Ответ №2:

Я бы посоветовал UDF (определяемую пользователем функцию), подсчитывающую количество событий внутри строки. Это может быть основано на функции Split() VBA: вы разбиваете строку на отдельные части и подсчитываете те, которые вы ищете.

Затем вы пишете макрос VBA на основе этого UDF для всех выбранных ячеек.

Ответ №3:

Эта пользовательская функция отобразит все вхождения указанной строки.

 Function countStringRange(theRange As Range, theString As String) As Long
Dim ws As Worksheet, cleanRange As Range, aCell As Range
Dim i As Long, theLength As Long
    Set ws = theRange.Worksheet
    theLength = Len(theString)

    Set cleanRange = Intersect(ws.UsedRange, theRange)
    
    If Not cleanRange Is Nothing Then
        For Each aCell In cleanRange.Cells
            If Not IsEmpty(aCell) Then
                For i = 1 To Len(aCell.Value) - theLength   1
                    If Mid(aCell.Value2, i, theLength) = theString Then
                        countStringRange = countStringRange   1
                    End If
                Next i
            End If
        Next aCell
    End If

End Function
 

Пример
введите описание изображения здесь