Как извлечь числа из строки и разделить их запятой (или другим разделителем) (подставить, заменить, стереть, указать номер, удалить, удалить,...)
Мне нужно извлечь числа из строки в Excel, и числа должны быть разделены запятой, как показано в строке 3 (или любым другим разделителем).
Я могу извлечь числа в строке 1 следующим образом:
      =SUMPRODUCT(MID(0&A1, LARGE(INDEX(ISNUMBER(--MID(A1, ROW(INDIRECT("1:"&LEN(A1))), 1)) * ROW(INDIRECT("1:"&LEN(A1))), 0), ROW(INDIRECT("1:"&LEN(A1))))+1, 1) * 10^ROW(INDIRECT("1:"&LEN(A1)))/10)´´´
Или во второй строке:
      =SUM(MID(0&A2,LARGE(INDEX(ISNUMBER(--MID(A2,ROW($1:$99),1))*ROW($1:$99),),ROW($1:$99))+1,1)*10^ROW($1:$99)/10)
Однако мне нужно, чтобы их как-то разделили.
ПРИМЕЧАНИЕ. У меня есть до 200 различных комбинаций чисел и марок автомобилей, из-за которых простые функции замены достигают своих пределов. Я предпочитаю решение на основе формул без скрытых промежуточных столбцов, если это возможно (конечно, без щелчка мышью вручную). У меня низкие навыки VBA, но я открыт для новых задач!
1 ответ
Изменить: 
 кажется, что реальные данные сложнее, чем первоначально представленный образец. Самый простой способ запрограммировать это — использовать регулярные выражения для извлечения чисел.
- Извлеките любую строку цифр, следующую за началом строки; или
commaнеобязательно, за которым следует один или несколькоspaces 
Edit2. Преобразованный в позднюю привязку после того, как я прочитаю, шаблон будет распространен.
      Option Explicit
Function extrNums(cellRef) As String
    Dim RE As Object, MC As Object, M As Object
    Dim sTemp As Variant
    Const sPat As String = "(?:^|,\s*)(\d+)\b"
    
Set RE = CreateObject("vbscript.regexp")
With RE
    .Global = True
    .MultiLine = True
    .Pattern = sPat
    If .Test(cellRef) Then
        Set MC = .Execute(cellRef)
        For Each M In MC
            sTemp = sTemp & ", " & M.SubMatches(0)
        Next M
    End If
End With
extrNums = Mid(sTemp, 3)
End Function
 Числа извлечения объяснений регулярных выражений
 (?:^|,\s*)(\d+)\b
Опции: совпадение ^$ в разрывах строк.
- Сопоставьте регулярное выражение ниже 
(?:^|,\s*) - Сопоставьте регулярное выражение ниже и запишите его совпадение в обратную ссылку номер 1. 
(\d+) - Утверждать позицию на границе слова 
\b 
Создано с помощью RegexBuddy

