以表格格式转换更大的字符串

Converting bigger string in a tabular format

我被要求做月末报告。数据庞大,无法在短时间内手动完成。我需要寻求建议,我可以使用什么公式来获得所需的结果。

在 B 列中,我有几个用逗号分隔的字符串,我需要将它们放在单独的列中。如图所示,我需要在各自的列中对每个类别进行计数。

请告诉我应该使用哪个公式。

试试这个代码

Sub Test()
Dim a, x, c, i&, j%, k%, n$

a = Range("B2").CurrentRegion.Value

For i = 2 To UBound(a)
    x = Split(a(i, 1), ",")

    For j = LBound(x) To UBound(x)
        n = Empty
        For k = 1 To Len(x(k))
            If IsNumeric(Mid(x(j), k, 1)) Then
                n = n & Mid(x(j), k, 1)
            Else
                c = Application.Match(Split(x(j), n)(1), Rows(2), 0)
                If Not IsError(c) Then a(i, c - 1) = n
                Exit For
            End If
        Next k
    Next j
Next i

Range("B2").Resize(UBound(a, 1), UBound(a, 2)).Value = a
End Sub

另一种使用正则表达式的解决方案

Sub Test()
Dim a, x, c, i&, j%, n$, re As Object

a = Range("B2").CurrentRegion.Value
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "(?:(\D+)?(\d+))|(?:(\D+)(\d+)?)"

For i = 2 To UBound(a)
    x = Split(a(i, 1), ",")

    For j = LBound(x) To UBound(x)
        n = Empty
        If re.Test(x(j)) = True Then
            n = WorksheetFunction.Trim(re.Replace(x(j), "   "))
            c = Application.Match(Split(n)(1), Rows(2), 0)
            If Not IsError(c) Then a(i, c - 1) = Val(Split(n)(0))
        End If
    Next j
Next i

Range("B2").Resize(UBound(a, 1), UBound(a, 2)).Value = a
End Sub

或者,您可以简单地使用 Excel 函数:

=IFERROR(TRIM(RIGHT(SUBSTITUTE(LEFT($B3,SEARCH(C,$B3)-1),",",REPT(" ",255)),255)),"")

结果: