Значения суммы в Excel путем извлечения чисел из одной многострочной ячейки

#regex #google-sheets #excel-formula #google-sheets-formula

#регулярное выражение #google-sheets #excel-формула #google-таблицы-формула

Вопрос:

 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», мне нужна помощь, поискал по всем форумам, не смог получить точное совпадение, это сэкономит мне огромное время, если кто-нибудь сможет дать мне подсказку о том, как вывести сумму внутри одной строки ячейки

Комментарии:

1. вы хотите, чтобы это было в таблицах Google?

Ответ №1:

Насколько я знаю, вы можете выполнить это только с помощью UDF:

 Function ReturnSum(rng As Range) As Long

    Dim arr As Variant

    arr = Split(rng.Value, Chr(10) amp; Chr(10))

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

End Function
  

изображение 1

Комментарии:

1. Хотите поспорить, что единственный способ — UDF в Excel?

Ответ №2:

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

Ответ №3:

В 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 при выходе из режима редактирования.

введите описание изображения здесь

Комментарии:

1. И снова черная магия… Я полагаю, что вокруг очень мало людей, которые могут написать формулу для достижения этого!