Подсчет элементов в строке в Excel - PullRequest
0 голосов
/ 20 мая 2011

У меня есть строка, упомянутая ниже, и мне нужно вернуть результаты в 2 отдельных столбцах

Столбец 1: Подсчитать все места, разделенные точкой с запятой. в приведенном ниже примере всего 15 имен, которые объединены точкой с запятой

Колонка 2: После этого мне нужно посчитать, сколько имен НАЧИНАЕТСЯ с A, B & C, а сколько нет.

A1604A;A3703E;A3703H;C2203H;F1001B;F1001C;F1001D;F1001E;F1001F;F1001G;F1001H;F1001J;F1001K;F1001L;F1001M

1 Ответ

3 голосов
/ 20 мая 2011

Итерация массива разбиения с увеличением массива счетчиков для A, B, C, Other;

Dim str     As String: str = "A123;A456;B111;C222;C333;ZXX;Y66"
Dim items() As String
Dim i       As Long
Dim pfx(3)  As Long
Dim key     As Long

items = Split(str, ";")

For i = 0 To UBound(items)
    Select Case Left(items(i), 1)
        Case "A", "B", "C"
            key = Asc(Left(items(i), 1)) - 65 '//convert to 0,1,2 for counter index
        Case Else
            key = 3
    End Select
    pfx(key) = pfx(key) + 1
Next

Range("A1").Value = "total: " & UBound(items) + 1
Range("B1").Value = "A total: " & pfx(0)
Range("C1").Value = "B total: " & pfx(1)
Range("D1").Value = "C total: " & pfx(2)
Range("E1").Value = "Other total: " & pfx(3)
...