#vba #split #excel-2010
#vba #разделение #excel-2010
Вопрос:
У меня есть строка, упомянутая ниже, и мне нужно вернуть результаты в 2 отдельных столбцах
Столбец 1: Подсчитайте все местоположения, разделяемые точкой с запятой. в приведенном ниже примере всего 15 имен, которые соединены точкой с запятой
Столбец 2: После этого мне нужно подсчитать, сколько имен НАЧИНАЮТСЯ с A, B amp; C, а сколько нет.
A1604A;A3703E;A3703H;C2203H;F1001B;F1001C;F1001D;F1001E;F1001F;F1001G;F1001H;F1001J;F1001K;F1001L;F1001M
Комментарии:
1. Могу ли я узнать, почему в этом сообщении есть отрицательный отзыв. Не хотите поделиться причиной?
Ответ №1:
Повторите разделенный массив, увеличивая массив счетчиков для 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: " amp; UBound(items) 1
Range("B1").Value = "A total: " amp; pfx(0)
Range("C1").Value = "B total: " amp; pfx(1)
Range("D1").Value = "C total: " amp; pfx(2)
Range("E1").Value = "Other total: " amp; pfx(3)