Доброго времени суток. В работе столкнулся с необходимостью подсчета количества аргументов в простой формуле. Подскажите пожалуйста, каким образом можно рассчитать сумму количества аргументов, если таблица вмещает в себя несколько столбцов с простыми формулами сумм аргументов. (Приложение). Или подсчет в таком случае возможен только в ручную? ;(
Казанский, нет не это. Если посмотрите файл, то увидите, что в каждой ячейке стоит простая формула " =1+11+111+11111". Интересует в частности каким образом можно посчитать количество аргументов в ячейке. Т.е. в данной формуле " =1+11+111+11111" - количество аргументов равно - 4. А надо как-то формулой это рассчитать. Может вопрос и простой. Но что-то найти ответа я не могу =(
vikttur, а попроще можно? Если посмотрите файл, то увидите, что в каждой ячейке стоит простая формула " =1+11+111+11111". Интересует в частности каким образом можно посчитать количество аргументов в ячейке. Т.е. в данной формуле " =1+11+111+11111" - количество аргументов равно - 4. А надо как-то формулой это рассчитать. Может вопрос и простой. Но что-то найти ответа я не могу =(
Если просто суммирование, то =ДЛСТР(Ф.ТЕКСТ(A2))-ДЛСТР(ПОДСТАВИТЬ(Ф.ТЕКСТ(A2);"+";""))+1 Если Интересны ещё какие-то операторы, то нужно наращивать условия в Подставить
Wiss, Логику я понял, но не работает почему то =((((
и если чуть сложнее, две ячейки: в одной ячейке к примеру: "=1+111+1111+1"; во второй ячейке "=сумм(1;111;1111;1111111;1)" . Каким образом можно посчитать количество значений в двух ячейках?
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
Версия Excel 2010. Сейчас очень Важен ответ на такой вопрос: Как посчитать формулой количество значений в простой формуле " =1+11+111+11111" в ячейке. Т.е. результатом должно быть, что в данной формуле " =1+11+111+11111" - количество значений равно = 4.
GreyOLDsmile написал: а что делать владельцам Excel версии 2010
Учить VBA
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
Если только с плюсами то можно попробовать вот такую простенькую функцию
Код
Public Function счётПлюсов(ByVal ячейка As Range) As Long
Dim strX As String
strX = ячейка.Formula
счётПлюсов = Len(strX) - Len(Replace(strX, "+", ""))
End Function
wowick написал: при отсутствии аргументов (пустая ячейка) ваш код вернет 1
Мы здесь не кривые руки обрабатываем, а решаем конкретные задачи с конкретными условиями. Для того, чтобы wowick, не ворчал
Код
If Left(ThisWorkbook.Sheets(1).[A1].Formula, 1) <> "=" Then
Exit Sub
Else
i = 0
x = ThisWorkbook.Sheets(1).[A1].Formula
Do While InStr(x, "+") <> 0
n = InStr(x, "+")
x = Right(x, Len(x) - n)
i = i + 1
Loop
MsgBox (i + 1)
End If
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.
ProFessor, Сергей, Wiss, огромное спасибо. А не могли бы подсказать чайнику, где можно поучиться этому? Пожалуйста. Как говориться, чтоб просто и со вкусом. Просто в школе и в институте учил другие языки программирования. Заранее благодарен.
GreyOLDsmile написал: Просто в школе и в институте учил другие языки программирования
Тогда проблем с VBA не должно быть. Он довольно простой. Я не люблю книги по 500-600 страниц (хотя не исключаю того, что они кому-то помогают), делаю всегда так: 1) Изучаю базовые объекты языка (переменные, функции, типы данных, функции, классы, и.т.д.) 2) Логические схемы языка (Циклы, условия, перечисления, сортировки) 3) Делаю базовые задачи, типа "Hello World!", "Калькулятор", "Маленькая БД с массивами данных" и.т.д. В процессе этого получаю сразу прикладные знания в нужном мне русле, все непонятные моменты ищу в интернете.
Вся проблема сложных программ, целых томов кодов и состоит в несоблюдении принципа лезвия Оккама: «Не следует множить сущее без необходимости». Вся гениальность в простоте.