Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2010, 21:00   #21
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

DV68, очень достойно!!!
с есть смысл обьявить как =строка(двссыл("1:" & макс(длстр(данные))))
данные - понятно, ссылка на массив данных.
Я парюсь весь массив сосчитать. не выходит не фига, но мысль не оставляет.
высмотрел в формуле два замечальных приема, пригодятся...
еще раз, DV68, мое почтение! молодец!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 22.11.2010, 22:40   #22
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Код:
Function Сумматекст(Диапазон As Range, Условие As Boolean) As Double
arr = Диапазон.Value
Dim str$, a$, b As Double, c As Double, i&, j&, x&
For x = 1 To Диапазон.Columns.Count
For i = 1 To UBound(arr)
str = arr(i, x)
    For j = 1 To Len(str)
     If Условие = False Then
            If IsNumeric(Mid(str, j, 1)) Then
                a = Mid(str, j, 1)
                c = c & a
                Else
                b = b + c: c = 0
            End If
     Else
        If IsNumeric(Mid(str, j, 1)) Then b = b + Mid(str, j, 1)
    End If
    Next j
b = b + c
c = 0
Next i
Next x
Сумматекст = b
End Function
В условии если 0 то 20+20 если 1 то 2+0+2+0
до кучи
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 23.11.2010, 00:57   #23
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
с есть смысл обьявить как =строка(двссыл("1:" & макс(длстр(данные))))
Так летучая же, зараза
Думаю, именно поэтому автор использовал ИНДЕКС.
vikttur вне форума Ответить с цитированием
Старый 23.11.2010, 01:20   #24
ZORRO2005
Форумчанин
 
Аватар для ZORRO2005
 
Регистрация: 26.11.2006
Сообщений: 584
По умолчанию

Чтобы переделать формулу DV68 под диапазон схитрил с именами.
Вложения
Тип файла: rar Сумма_цифр_22.rar (9.9 Кб, 102 просмотров)
ZORRO2005 вне форума Ответить с цитированием
Старый 23.11.2010, 12:12   #25
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Виктор, это =строка(двссыл("1:" & макс(длстр(данные)))) не летает, тут констатнта. Дело не в индексе, просто у DV68 с = {1:2:3:4...256}, а в предлагаемом варианте с={1:2:3:4...до максимальной длины строки}, а не до 256. данные все обрабатываются, и пошагово можно хоть что-то высмотреть и, наконец, (несущественный аргумент) меньше вычислений.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 23.11.2010, 12:28   #26
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
это =строка(двссыл("1:" & макс(длстр(данные)))) не летает, тут констатнта.
Не согласен. Мало того, что ДВССЫЛ летуча, она еще и "недоделана", имеет много ограничений.
Цитата:
Сообщение от IgorGO Посмотреть сообщение
просто у DV68 с = {1:2:3:4...256}, а в предлагаемом варианте с={1:2:3:4...до максимальной длины строки}, а не до 256.
Не согласен.
ИНДЕКС($A$1:$A$255;ДЛСТР(A2)) тоже выдает число ДЛСТР, а
$A$1:ИНДЕКС(...) диапазон с 1 до ДЛСТР.
vikttur вне форума Ответить с цитированием
Старый 23.11.2010, 13:43   #27
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а вот теперь я не согласен.
куда улетит =строка(двссыл("1:1"))?
куда ее не пиши, куда не копируй везде результат будет 1.
соответственно строка(двссыл("1:" & макс(длстр(данные)))) это всегда и везде будет множество от {1:2:3 ... до "максимальной длины строки в данных"}.

я писал об имени "с". можешь соглашаться, можешь нет - открой файл сумма_цифр и посмотри что возвращает "с".
ИНДЕКС($A$1:$A$255;ДЛСТР(A2)) перестанет летать и вернет тоже о чем я говорю, если так написать ИНДЕКС($A$1:$A$255;ДЛСТР($A$2)). вот на это я обратил внимание только сейчас.
вот так:
=строка(двссыл("1:" & длстр($A$2)))
=строка(ИНДЕКС($A$1:$A$255;ДЛСТР($A $2)))
результат один и тот же и ничего не летает.

ну, за стабильность!!!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 23.11.2010 в 13:58.
IgorGO вне форума Ответить с цитированием
Старый 23.11.2010, 15:11   #28
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Мы о разном?
Летучая функция - та, которая пересчитывается не только при изменении влияющих ячеек, но и при каждом изменении на листе.
ДВССЫЛ летуча, ИНДЕКС нет.
vikttur вне форума Ответить с цитированием
Старый 27.11.2010, 12:28   #29
DV68
Форумчанин
 
Регистрация: 05.08.2009
Сообщений: 465
По умолчанию

Привет. Наконец-то эта безумная (для меня) рабочая неделя закончилась. Можно и в форум окунуться
Всем спасибо за добрые слова.
ZORRO, молодец! Я честно говоря даже не пробовал делать для диапазона, думал невозможно. Рад, что ошибался.

P.s. А что, на форуме человеку можно только один раз добавить отзыв? Семерым попробовал, ни одному не получилось(
"Все следует делать настолько простым, насколько это возможно, но не проще." Альберт Эйнштейн
DV68 вне форума Ответить с цитированием
Старый 27.11.2010, 12:37   #30
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

это чтобы "кумовства" не разводили, а то появляется гипотетическая возможность немеряно накрутить рейтинг другу
хорошо что мы понимаем друг друга и оцениваем не "репутациями", а ответами. а возникающие диспуты - только оттачивают мастерство.
DV68, два нестандартных приема в одной формуле - это круто и оценено было именно это. уверен задачку эту многие крутили...
Исходя из народной мудрости: "настроить можно что угодно, если достаточно долго крутить это в руках".
А вообще, лично я больше всего у местных программистов научился. SAS888, EducatedFull, Doober - респект! Отвечайте - многим полезно, не только тем, кто спросил
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 27.11.2010 в 12:51.
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
суммировать значения повторяющихся ячеек в excel breeze.olga Microsoft Office Excel 17 17.12.2015 17:03
как округлить числа во всём столбце(2500 ячеек)? Danatos Microsoft Office Excel 13 15.02.2011 06:08
Как преобразовывать числа в текст? bluesman Microsoft Office Excel 4 25.09.2010 00:22
Числа как текст ezus Microsoft Office Excel 4 02.08.2009 14:17
Как в OnkeyPress отловить если в Edit есть текст позицию заменяемого символа? slips Общие вопросы Delphi 3 06.12.2008 18:12