Страницы: 1
RSS
Сложение чисел написанных через дробь
 
Нужно сложить числа написанные в одной ячейке через дробь. Например, в ячейке написано 1/200/50/60. Нужно в другую ячейку написать результат сложения этих чисел, т.е. 311. Хотелось бы через процедуру Function это реализовать если макросом решать вопрос, или лучше всего встроенными функциями. Все перепробовал ничего не получается.
 
dimabk, а покажите хоть одно то что вы пытались в файле примере соответственно..
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
dimabk написал:
Хотелось бы через процедуру Function это реализовать
Код
Function SumSlash(txt As String, Optional delim As String = "/") As Long
    Dim s As Long, x As Variant
    For Each x In Split(txt, delim)
        s = s + Val(x)
    Next x
    SumSlash = s
End Function
Изменено: MCH - 06.06.2018 17:10:05
 
в именах
=EVALUATE(SUBSTITUTE(Sheet1!A1;"/";"+"))
По вопросам из тем форума, личку не читаю.
 
Формула массива,ввдится тремя клаишами:
=СУММ(ЕСЛИОШИБКА(--ПСТР(ПОДСТАВИТЬ("/"&A1;"/";ПОВТОР(" ";50));СТРОКА(1:9)*50;50);))
Если значений боьше 9, изменить верхний номер в функции СТРОКА
 
Цитата
a.i.mershik написал:
dimabk , а покажите хоть одно то что вы пытались в файле примере соответственно..
Я пытался через функцию "Подставить" но просто вставляется потом как текст. Через процедуру SUB тоже пытался, просто с помощью Replace заменял слэш на плюс и вставлял как формулу в ячейку. Работает но не удобно. Поэтому лучше с помощью функции либо встроенной либо написанной в VBA.
Изменено: dimabk - 14.06.2018 12:44:12
 
Цитата
БМВ написал:
в именах=EVALUATE(SUBSTITUTE(Sheet1!A1;"/";"+"))
Спасибо. Не понял почему в именах ВЫЧИСЛИТЬ работает а на листе нет) Хороший вариант но не совсем удобен для не единичных вычислений.
Изменено: dimabk - 14.06.2018 12:43:38
 
Цитата
vikttur написал:
Формула массива,ввдится тремя клаишами:=СУММ(ЕСЛИОШИБКА(--ПСТР(ПОДСТАВИТЬ("/"&A1;"/";ПОВТОР(" ";50));СТРОКА(1:9)*50;50))Если значений боьше 9, изменить верхний номер в функции СТРОКА
Что то невероятное) Работает) только не пойму зачем перед ПСТР два минуса ставится) если не сложно подскажите)
 
Цитата
MCH написал:

Код
Function SumSlash(txt As String, Optional delim As String = "/") As Long    Dim s As Long, x As Variant
    For Each x In Split(txt, delim)
        s = s + Val(x)
    Next x
    SumSlash = s
End Function

Спасибо. Рабочий вариант. Про фишку с методом Split даже не знал хотя с VBA давно работаю. Спасибо всем за помощь большое))
PS: Надо в PLEX добавить такую функцию)
Изменено: dimabk - 07.06.2018 08:54:40
 
Цитата
dimabk написал:
почему в именах ВЫЧИСЛИТЬ работает а на листе нет
по тому что это фактически макрофункция, а не функция листа.

Приемущество этого метода перед чисто формульным вариантом vikttur, только в том, что можно таким образом и делить и умножать, недостаток в некоторой привязанности к ячейкам, и необходимости разрешить выполнение макросов :-).

Цитата
dimabk написал:
зачем перед ПСТР два минуса ставится
Используется фича excel перевода текста в число(если это возможно)  при совершении математических операций, в данном случае первый минус например "2" переведет в -2 в второй уже в 2. с тем же успехом можно домножить на 1 или прибавить, отнять 0.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Используется фича excel перевода текста в число(если это возможно)  при совершении математических операций, в данном случае первый минус например "2" переведет в -2 в второй уже в 2. с тем же успехом можно домножить на 1 или прибавить, отнять 0.
Спасибо большое! Даже не знал таких моментов и про макрофункции и про превращении в число. Еще раз спасибо за помощь! Все получилось)
 
dimabk, кнопка цитирования не для бездумного копирования.
Вернитесь, приведите сообщения в порядок. Если нужна цитата - так делайте цитату. А для простого сообщения - кнопка Ответить
Страницы: 1
Читают тему
Наверх