Страницы: 1
RSS
сумма значений разделенных пробелами
 
В ячейке есть некоторое количество (2 или более) целых чисел разделенных пробелами
можно в соседней ячейке формулой получить сумму этих чисел?
Изменено: Игорь Гончаренко - 21.07.2016 18:03:08
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Наверно можно заменить пробелы знаком плюс и использовать макрофункцию ВЫЧИСЛИТЬ. Пробуйте.
 
можно в соседней ячейке формулой получить сумму этих чисел?

т.е. в соседней ячейке =Сумм(...) или как-то еще. без макросов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Именно формулой? Макрос не подойдёт?
P.S. Это не Игорь Go, случайно? ))
 
Формула массива:
=СУММ(ЕСЛИ(ЕЧИСЛО(-ПСТР(A1;СТРОКА($1:$999);1));--ПСТР(A1;СТРОКА($1:$999);1);0))
числа, разделенные пробелами в ячейке А1. По факту могут быть разделены чем угодно. Но суммируются только однозначные числа(цифры). Если будет записано число 23, то оно будет просуммировано как 5(2+3)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
P.S. Это не Игорь Go, случайно? ))
да это я))

всем спасибо! но...
будьте любезны, если есть время и вдохновение, пожалуйста одну формулу и для чисел, а не цифр
на самом деле числа могут быть действительные, но это уже не настолько важно

еще раз спасибо!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Кстати, уже обсуждалось: http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=71196&MID=s
И решения, вроде, приемлемые...
Изменено: Tyson78 - 22.07.2016 12:01:08
Кому сгореть, тот не утонет.
 
Код
=СУММ(--(ПСТР(ПОДСТАВИТЬ(" "&СЖПРОБЕЛЫ(A1)&ПОВТОР(" 0";40);" ";ПОВТОР(" ";90));СТРОКА(A1:A40)*90;90)))
допустим в А1 пишу =1 & повтор(" 1";49) (получаю 50 единичек разделенных пробелами
реальная сумма = 50
результат формулы = 40, ну это допустим из-за этого СТРОКА(A1:A40)

пишу а А1 = 1111111 & повтор(" 1111111";39) получаю 40 групп по 7 единичек
реальная сумма = 1111111*40 = 44444440 (44 млн. ...)
результат формулы = 40012340
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
формулу я взял с предложенного выше обсуждения.

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

и еще раз - это задача для людей, имеющих время и вдохновение)
Изменено: Игорь Гончаренко - 22.07.2016 14:41:04
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
вариант с функцией uuu в C1 для #6
 
Код
Function uuu#(t$)
    Dim i&: t = Replace(t, ",", ".")
 With CreateObject("VBScript.RegExp"): .Pattern = "\d+\.\d+": .Global = True
 For i = 0 To .Execute(t).Count - 1
    uuu = uuu + Val(.Execute(t)(i))
 Next
 End With
End Function
Изменено: sv2013 - 22.07.2016 14:29:56
 
спасибо!

макросом я решил бы это так
Код
Function SumP(rg As Range)
  SumP = Evaluate(Replace(rg, " ", "+"))
End Function
но нужна-то формула
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
пишу а А1 = 1111111 & повтор(" 1111111";39) получаю...
...длинную текстовую строку (>256 знаков), которая не обрабатывается формулой. Потому и ошибка.
В формуле разбить текст на два и объединить две полученные суммы.
 
Игорь Гончаренко,Ваш вариант из #11 работает в моем файл-примере в F1 так
 
Код
Function SumP1(x)
  x = Replace(x, ",", ".")
  SumP1 = Evaluate(Replace(x, " ", "+"))
End Function
Изменено: sv2013 - 22.07.2016 19:22:24
 
Еще вариант с использованием формул в диспетчере имен.  
Изменено: gling - 23.07.2016 00:14:28
 
vikttur, предложенная gling формула замечательно обрабатывает строку
Код
= 1111111 & повтор(" 1111111";39)
длиной 319 символов. Результат = 44444440
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Страницы: 1
Наверх