Страницы: 1
RSS
Суммировать числа внутри ячейки, которые прописаны через слеш, Пример: текст в ячейке 5/5/1 и как получить в соседней ячейке их сумму 11?
 
Отыскал только решение макросом, но мне оно не нужно. Формулой хоть как-то можно?
https://www.mrexcel.com/board/threads/sum-all-digits-in-single-cell.640823/page-2#post-5051651

Значения в ячейках по типу: 60.5/90/60.5
Преобразую через Подставить заменив точку на запятую и слеш на плюс, результат 60,5+90+60,5 = никак не могу сложить

pl ex.xlsx (22.7 КБ)

В гугле есть пример с весом в КГ, который убирается тем же Подставить и суммируют диапазон преобразованных ячеек и это совсем не то)

Самое дикое решение вижу это вычленение каждого числа по разделителю и после сложить. Формула на выходе будет трешевой
Изменено: jiumohoo - 06.12.2022 23:30:51
 
Можно так.
=SUMPRODUCT(--TRIM(MID(SUBSTITUTE(SUBSTITUTE(F7;".";MID(1/2;2;1));"/";REPT(" ";15));1+(ROW(A$1:INDEX(A:A;LEN(F7)-LEN(SUBSTITUTE(F7;"/";))+1))-1)*15;15)))
В пример добавил различные варианты с большим-меньшим кол-вом слэшей. Обратите внимание на этот блок: =SUBSTITUTE(F7;".";MID(1/2;2;1)) - он делает формулу универсальной для систем с разными разделителями.
Изменено: memo - 07.12.2022 00:33:55
 
365
Код
=СУММ(--ПОДСТАВИТЬ(ТЕКСТРАЗД(F7;"/");".";","))
 
Еще вариант. Массивный
=СУММ(ЕСЛИОШИБКА(--ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(F7;".";ПСТР(1/2;2;1));"/";ПОВТОР(" ";99));99*СТОЛБЕЦ(A:Z)-98;99);))
Изменено: _Boroda_ - 07.12.2022 10:47:28
Скажи мне, кудесник, любимец ба’гов...
 
Power Query
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Replaced Value" = Table.ReplaceValue(Source,".",",",Replacer.ReplaceText,{"Column1"}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Replaced Value","Column1",Splitter.SplitTextByDelimiter("/", QuoteStyle.Csv),{"Column1.1", "Column1.2", "Column1.3"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type number}, {"Column1.2", type number}, {"Column1.3", type number}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each [Column1.1]+[Column1.2]+[Column1.3]),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Custom", type number}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type1",{"Column1.1", "Column1.2", "Column1.3"})
in
    #"Removed Columns"
 
jakim, ничего себе, вы коллега коды пишите
может вот так будет попроще?
Код
let
    Source = List.RemoveNulls(Excel.CurrentWorkbook(){[Name="Table1"]}[Content][Column1]),
    a = List.Transform(Source, (x)=> List.Sum(List.Transform(Text.Split(x, "/"), (x)=> Number.From(x, "en-en"))))
in
    a
 
Можете ещё так попробовать
 
Код
=СУММ(ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(ПОДСТАВИТЬ(F7;".";ПСТР(1/2;2;1));"/";"</i><i>")&"</i></j>";"//i"))
 
для конкретных условий, чуть укоротить можно варианты предоженные выше
=SUM(--MID(SUBSTITUTE(SUBSTITUTE(F20;".";MID(1%;2;1));"/";REPT(" ";99));{1;99;198};99))
=СУММ(--ПСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(F20;".";ПСТР(1%;2;1));"/";ПОВТОР(" ";99));{1;99;198};99))
Изменено: БМВ - 07.12.2022 19:58:48
По вопросам из тем форума, личку не читаю.
 
Всем спасибо. Самая красотка у Антона и функционирует только на работе, ибо там 365 (и то как выяснилось не у всех он установлен)
Код
=СУММ(--ПОДСТАВИТЬ(ТЕКСТРАЗД(F7;"/");".";","))
Также кажись из той же оперы на 365 или где-то ещё работать должны функции Textbefore, Textafter также по разделителю теоретически можно решить
Цитата
написал:
Можете ещё так попробовать
Не работает, 2019 эксель

Видимо от массивной жести не уйти :(
Изменено: jiumohoo - 07.12.2022 20:03:32
Страницы: 1
Наверх