Страницы: 1
RSS
Просуммировать числа в ячейке написанные через пробел
 
Всем добра еще раз! )
(добра много не бывает)

Знаю, что тупо, но ничего умнее пока придумать не могу
В ячейке B2 такой "текст": 41 38 22 15 21 74 14 42 62 45 67 51 6 47 4 76 36 35 50 63
Хочется получить из него виртуальную строку с числами, а затем, к примеру, просуммировать
Делаю так (как формула массива): =СУММ(--(ПОДСТАВИТЬ(B2;" ";";")))
получаю #ЗНАЧ!
вероятно, вообще не стой стороны зашел, подскажите, пожалуйста, откуда лучше зайти (с какой стороны) чтобы решить эту задачу?
Изменено: Zhukov_K - 01.11.2015 10:49:05
 
Неудобно же читать, когда ВСЕ через строку!

ПОДСТАВИТЬ с массивами не работает.
Не то. Здесь сумме передается текстовая строка, которую пытаетесь преобразовать в число.
 
Zhukov_K, почитайте про макрофункцию ВЫЧИСЛИТЬ.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, с макрофункциями мороки многовато. Проще уж UDF типа такой
Код
Function tt(text As String)
Dim arr: arr = Split(Application.WorksheetFunction.Trim(text))
Dim I As Long
For I = 0 To UBound(arr)
    tt = tt + Val(arr(I))
Next
End Function
 
Цитата
МВТ написал: с макрофункциями мороки многовато
Например?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
В применении. Напрямик в ячейку их не ввести. Вот ссылка на их использование (JayBhagavan, я не Вас имел в виду, возможно кто-то не знает)
 
МВТ, использовать макрофункцию через диспетчер имён, имхо, проще нежели макрос.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, я ж не спорю, просто озвучил СВОЕ мнение  ;)
 
ВЫЧИСЛИТЬ в UDF :)
Код
Function MySum(x)
  MySum = Evaluate(Replace(Trim$(x), " ", "+"))
End Function
 
а обычными формулами не получится вообще никак решить?
 
Попробуйте формулу массива. Только значения в ячейке должны начинаться с пробела и заканчиваться пробелом
Код
=СУММ(ЕСЛИОШИБКА(--(ПСТР(A1;ПОИСК(";";ПОДСТАВИТЬ(A1;" ";";";СТРОКА(1:100)));ПОИСК(";";ПОДСТАВИТЬ(A1;" ";";";СТРОКА(1:100)+1))-ПОИСК(";";ПОДСТАВИТЬ(A1;" ";";";СТРОКА(1:100)))));0))
Или A1 везде заменить на сцепку " "&A1&" "
Код
=СУММ(ЕСЛИОШИБКА(--(ПСТР(" "&A1&" ";ПОИСК(";";ПОДСТАВИТЬ(" "&A1&" ";" ";";";СТРОКА(1:100)));ПОИСК(";";ПОДСТАВИТЬ(" "&A1&" ";" ";";";СТРОКА(1:100)+1))-ПОИСК(";";ПОДСТАВИТЬ(" "&A1&" ";" ";";";СТРОКА(1:100)))));0))
Изменено: gling - 01.11.2015 09:05:07
 
круто! уух!... ну и решеньице! спасибо огромное! буду медитировать, осмысливать!
спасибо!!!
 
Формула массива:
=СУММ(--(ПСТР(ПОДСТАВИТЬ(" "&A1&ПОВТОР(" 0";40);" ";ПОВТОР(" ";90));СТРОКА(A1:A40)*90;90)))
Если первый символ в ячейке пробел, то не цеплять " "&A1...
 
Цитата
круто! уух!...
Сам в шоке)))
 
vikttur, у меня Ваша формула почему-то не работает ((
 
У меня почему-то работает... Кто первый?
Вы за всю тему не протрудились показать пример... На замечание во втором сообщении не отреагировали... Все делать вместо Вас?
 
Цитата
vikttur написал: У меня почему-то работает...
м...да... у меня тоже не работает :(
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
как вариант - данные-текст по столбцам, разделитель пробел, ну а потом у делать все что угодно с отдельными цифрами в отдельных ячейках.
 
Цитата
vikttur написал: Неудобно же читать, когда ВСЕ через строку!
Если имелось ввиду это замечание, то я только сейчас понял его смысл, исправлю!

Приложил файл, где используется Ваша формула
 
При копировании из сообщения в конце формулы - лишний пробел
 
посмотрите в файле - там нет пробела в конце формулы в ячейке с формулой - в B2
(если нажать на F2 на этой ячейке и перейти в конец и выделить один символ влево, то будет выделена закрывающая скобка)
 
Извините, не в той ячейке глянул.
Побел последний - в данных (не зря просим показывать свои данные, верно ведь?). Кстати, в тексте, показанном в первом сообщении, последнего пробела нет.

Или убрать этот пробел, или добавить очистку в формулу:
=СУММ(--(ПСТР(ПОДСТАВИТЬ(" "&СЖПРОБЕЛЫ(A1)&ПОВТОР(" 0";40);" ";ПОВТОР(" ";90));СТРОКА(A1:A40)*90;90)))
 
Первоначальная массивная от Виктора работает - итог 809 по первоначальному примеру ТС... ;)
Изменено: Z - 01.11.2015 11:17:41
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
да, заработало! ))
а насколько принципиально делать повтор именно 40 и 90 раз? а потом начальную позицию умножать на 90 и брать 90 как количество знаков?
можно ли обойтись меньшими числами или надо именно 40 и 90?
Изменено: Zhukov_K - 01.11.2015 11:24:51
 
Можно и меньше.
Если все числа двузначные, то формула легче. А здесь приходится растягивать промежутки между числами, чтобы наверняка.
Страницы: 1
Наверх