Сумма значений Excel путем извлечения чисел из одной многострочной ячейки - PullRequest
1 голос
/ 08 марта 2019
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", мне нужна помощь, поиск по всем форумам, не удалось найти точное совпадение, это сэкономит мне огромное время, если кто-нибудь сможет дать мне подсказку о том, как получить сумма внутри одной строки ячейки

Ответы [ 3 ]

3 голосов
/ 08 марта 2019

Насколько я знаю, вы можете сделать это только через 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

img1

2 голосов
/ 08 марта 2019
=SUMPRODUCT(ARRAYFORMULA(REGEXEXTRACT(SPLIT(C2,CHAR(10))," \d+")))

1 голос
/ 08 марта 2019

В Excel формула немного сложнее и формула массива:

=SUM(IFERROR(--MID(TRIM(MID(SUBSTITUTE(A1,CHAR(10),REPT(" ",99)),(ROW($XFD$1: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$1:INDEX(XFD:XFD,LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))+1))-1)*99+1,99)))+3,99),0))

Будучи формулой массива, она должна быть подтверждена с помощью Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...