Excel 通过从单个多行单元格中提取数字来求和值

Excel Sum values by extracting numbers from single multi-line cell

AL-CHE-P1-1518   ---     270  

AL-CHE-P2-1318    ---    280  

AL-MAT-P1-1218     ---   280  

AL-MAT-P4-0918      --- 40  

所有这些数据都在同一个单元格 C2 中,我的目标是推导出一个公式来求和

 270+280+280+40

在单元格 D2 中

试过regextract(c2,"\d(.*)\n")但只提取了第一个“270”,我需要帮助,搜索了所有论坛,找不到完全匹配,如果有人能给我一些提示,这将节省我大量时间关于如何导出同一单元格字符串中的总和

据我所知,您只能通过 UDF 完成此操作:

Function ReturnSum(rng As Range) As Long

    Dim arr As Variant

    arr = Split(rng.Value, Chr(10) & Chr(10))

    For i = 0 To UBound(arr)
        ReturnSum = ReturnSum + Trim(Split(arr(i), " --- ")(1))
    Next i

End Function

=SUMPRODUCT(ARRAYFORMULA(REGEXEXTRACT(SPLIT(C2,CHAR(10))," \d+")))

在Excel中公式稍微复杂一点,数组公式:

=SUM(IFERROR(--MID(TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",99)),(ROW($XFD:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))+1))-1)*99+1,99)),FIND("---",TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",99)),(ROW($XFD:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))+1))-1)*99+1,99)))+3,99),0))

作为数组公式,在退出编辑模式时必须使用 Ctrl-Shift-Enter 而非 Enter 进行确认。