сумма групп чисел разделенных нулями
Jhonson
Дата: Пятница, 12.08.2011, 11:04 |
Сообщение № 1
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Подскажите пожалуйста! Необходимо получить суммы групп чисел разделенных нулями. Нужно формулой.
Подскажите пожалуйста! Необходимо получить суммы групп чисел разделенных нулями. Нужно формулой. Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Сообщение отредактировал Jhonson - Пятница, 12.08.2011, 11:06
Ответить
Сообщение Подскажите пожалуйста! Необходимо получить суммы групп чисел разделенных нулями. Нужно формулой. Автор - Jhonson Дата добавления - 12.08.2011 в 11:04
Jhonson
Дата: Пятница, 12.08.2011, 11:31 |
Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
18 27 45 10
"Ничто не приносит людям столько неприятностей, как разум."
Сообщение отредактировал Jhonson - Пятница, 12.08.2011, 13:25
Ответить
Сообщение 18 27 45 10 Автор - Jhonson Дата добавления - 12.08.2011 в 11:31
Jhonson
Дата: Пятница, 12.08.2011, 13:23 |
Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
написал пользовательскую функцию, но хотелось бы стандартными средствами, без VBA вот текст функции:
Function суммгрупп(Diapazon As Range ) Dim itog(100) As Integer Dim iCell As Range k = 0 ch = 0 For Each iCell In Diapazon If iCell <> 0 Then k = k + iCell bul = 1 Else If k <> 0 Then itog(ch ) = k ch = ch + 1 End If bul = 0 k = 0 End If Next If k <> 0 Then itog(ch ) = k End If For i = 0 To ch суммгрупп = суммгрупп + CStr(itog(i )) + " " Next i End Function
написал пользовательскую функцию, но хотелось бы стандартными средствами, без VBA вот текст функции:
Function суммгрупп(Diapazon As Range ) Dim itog(100) As Integer Dim iCell As Range k = 0 ch = 0 For Each iCell In Diapazon If iCell <> 0 Then k = k + iCell bul = 1 Else If k <> 0 Then itog(ch ) = k ch = ch + 1 End If bul = 0 k = 0 End If Next If k <> 0 Then itog(ch ) = k End If For i = 0 To ch суммгрупп = суммгрупп + CStr(itog(i )) + " " Next i End Function
Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Ответить
Сообщение написал пользовательскую функцию, но хотелось бы стандартными средствами, без VBA вот текст функции:
Function суммгрупп(Diapazon As Range ) Dim itog(100) As Integer Dim iCell As Range k = 0 ch = 0 For Each iCell In Diapazon If iCell <> 0 Then k = k + iCell bul = 1 Else If k <> 0 Then itog(ch ) = k ch = ch + 1 End If bul = 0 k = 0 End If Next If k <> 0 Then itog(ch ) = k End If For i = 0 To ch суммгрупп = суммгрупп + CStr(itog(i )) + " " Next i End Function
Автор - Jhonson Дата добавления - 12.08.2011 в 13:23
Serge_007
Дата: Пятница, 12.08.2011, 13:30 |
Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Цитата (Jhonson писал(а)):
хотелось бы стандартными средствами, без VBA
Это не так просто... Результат в одну ячейку ведь надо?
Цитата (Jhonson писал(а)):
хотелось бы стандартными средствами, без VBA
Это не так просто... Результат в одну ячейку ведь надо?Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Цитата (Jhonson писал(а)):
хотелось бы стандартными средствами, без VBA
Это не так просто... Результат в одну ячейку ведь надо?Автор - Serge_007 Дата добавления - 12.08.2011 в 13:30
Jhonson
Дата: Пятница, 12.08.2011, 13:36 |
Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
можно каждую сумму в отдельную ячейку
можно каждую сумму в отдельную ячейку Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Сообщение отредактировал Jhonson - Пятница, 12.08.2011, 13:36
Ответить
Сообщение можно каждую сумму в отдельную ячейку Автор - Jhonson Дата добавления - 12.08.2011 в 13:36
Jhonson
Дата: Пятница, 12.08.2011, 13:51 |
Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Вот получилось, только пришлось добавить лишние столбцы и строки, да и вообще все как-то коряво получилось, может придумаете как избавиться от промежуточных данных.
Вот получилось, только пришлось добавить лишние столбцы и строки, да и вообще все как-то коряво получилось, может придумаете как избавиться от промежуточных данных. Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Ответить
Сообщение Вот получилось, только пришлось добавить лишние столбцы и строки, да и вообще все как-то коряво получилось, может придумаете как избавиться от промежуточных данных. Автор - Jhonson Дата добавления - 12.08.2011 в 13:51
Формуляр
Дата: Пятница, 12.08.2011, 15:04 |
Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация:
255
±
Замечаний:
0% ±
Excel 2003, 2013
Jhonson , у меня получился несколько более изящный вариант. Но без промежуточных значений всё равно - никак
Jhonson , у меня получился несколько более изящный вариант. Но без промежуточных значений всё равно - никак Формуляр
Excel 2003 EN, 2013 EN
Сообщение отредактировал Формуляр - Пятница, 12.08.2011, 15:05
Ответить
Сообщение Jhonson , у меня получился несколько более изящный вариант. Но без промежуточных значений всё равно - никак Автор - Формуляр Дата добавления - 12.08.2011 в 15:04
Jhonson
Дата: Пятница, 12.08.2011, 15:23 |
Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Формуляр , Спасибо, так действительно получше, но у меня исходных строк будет много, с дополнительными строками и столбцами будет слишком громоздко, наверное придется делать на VBA. Посмотрим, может кто еще что подскажет
Формуляр , Спасибо, так действительно получше, но у меня исходных строк будет много, с дополнительными строками и столбцами будет слишком громоздко, наверное придется делать на VBA. Посмотрим, может кто еще что подскажетJhonson
"Ничто не приносит людям столько неприятностей, как разум."
Ответить
Сообщение Формуляр , Спасибо, так действительно получше, но у меня исходных строк будет много, с дополнительными строками и столбцами будет слишком громоздко, наверное придется делать на VBA. Посмотрим, может кто еще что подскажетАвтор - Jhonson Дата добавления - 12.08.2011 в 15:23
Формуляр
Дата: Пятница, 12.08.2011, 17:02 |
Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация:
255
±
Замечаний:
0% ±
Excel 2003, 2013
Jhonson , если после исходных данных в строке ничего нет, например, результирующие строки вынесены на др. лист, то удаётся без промежуточных значений получить накопленные суммы. Остаётся только маленький шаг - получить их разность. Но на это ума уже не хватает. А жаль ...
Jhonson , если после исходных данных в строке ничего нет, например, результирующие строки вынесены на др. лист, то удаётся без промежуточных значений получить накопленные суммы. Остаётся только маленький шаг - получить их разность. Но на это ума уже не хватает. А жаль ...Формуляр
Excel 2003 EN, 2013 EN
Ответить
Сообщение Jhonson , если после исходных данных в строке ничего нет, например, результирующие строки вынесены на др. лист, то удаётся без промежуточных значений получить накопленные суммы. Остаётся только маленький шаг - получить их разность. Но на это ума уже не хватает. А жаль ...Автор - Формуляр Дата добавления - 12.08.2011 в 17:02
Формуляр
Дата: Пятница, 12.08.2011, 18:47 |
Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация:
255
±
Замечаний:
0% ±
Excel 2003, 2013
Можно, конечно, в тупую вычесть всю формулу саму из себя со смещением. Но это уже изврат. Уж лучше с промежуточными значениями.
Можно, конечно, в тупую вычесть всю формулу саму из себя со смещением. Но это уже изврат. Уж лучше с промежуточными значениями. Формуляр
Excel 2003 EN, 2013 EN
Ответить
Сообщение Можно, конечно, в тупую вычесть всю формулу саму из себя со смещением. Но это уже изврат. Уж лучше с промежуточными значениями. Автор - Формуляр Дата добавления - 12.08.2011 в 18:47
MCH
Дата: Пятница, 12.08.2011, 21:18 |
Сообщение № 11
Группа: Админы
Ранг: Старожил
Сообщений: 2008
Репутация:
752
±
Замечаний:
±
вариант без промежуточных вычислений
вариант без промежуточных вычислений MCH
К сообщению приложен файл:
__.xls
(19.5 Kb)
Ответить
Сообщение вариант без промежуточных вычислений Автор - MCH Дата добавления - 12.08.2011 в 21:18
Serge_007
Дата: Пятница, 12.08.2011, 21:21 |
Сообщение № 12
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Цитата (MCH писал(а)):
вариант без промежуточных вычислений
Осталось только в одну ячейку итог вывести
Цитата (MCH писал(а)):
вариант без промежуточных вычислений
Осталось только в одну ячейку итог вывести Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Цитата (MCH писал(а)):
вариант без промежуточных вычислений
Осталось только в одну ячейку итог вывести Автор - Serge_007 Дата добавления - 12.08.2011 в 21:21
Jhonson
Дата: Пятница, 12.08.2011, 21:28 |
Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Огромное спасибо, то что надо. Очень помогли. MCH +
Огромное спасибо, то что надо. Очень помогли. MCH + Jhonson
"Ничто не приносит людям столько неприятностей, как разум."
Ответить
Сообщение Огромное спасибо, то что надо. Очень помогли. MCH + Автор - Jhonson Дата добавления - 12.08.2011 в 21:28
MCH
Дата: Пятница, 12.08.2011, 22:17 |
Сообщение № 14
Группа: Админы
Ранг: Старожил
Сообщений: 2008
Репутация:
752
±
Замечаний:
±
Цитата (Serge_007 писал(а)):
Осталось только в одну ячейку итог вывести
еще один вариант в желтых ячейках с проверкой на ошибку, включая сводный итог
Цитата (Serge_007 писал(а)):
Осталось только в одну ячейку итог вывести
еще один вариант в желтых ячейках с проверкой на ошибку, включая сводный итогMCH
Ответить
Сообщение Цитата (Serge_007 писал(а)):
Осталось только в одну ячейку итог вывести
еще один вариант в желтых ячейках с проверкой на ошибку, включая сводный итогАвтор - MCH Дата добавления - 12.08.2011 в 22:17
Serge_007
Дата: Пятница, 12.08.2011, 22:51 |
Сообщение № 15
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация:
2749
±
Замечаний:
±
Excel 2016
Цитата (MCH писал(а)):
еще один вариант в желтых ячейках с проверкой на ошибку, включая сводный итог
TRIM - лишнее, но я не это имел ввиду Без доп. ячеек, в одну, сразу
Цитата (MCH писал(а)):
еще один вариант в желтых ячейках с проверкой на ошибку, включая сводный итог
TRIM - лишнее, но я не это имел ввиду Без доп. ячеек, в одну, сразу Serge_007
ЮMoney :41001419691823 | WMR :126292472390
Ответить
Сообщение Цитата (MCH писал(а)):
еще один вариант в желтых ячейках с проверкой на ошибку, включая сводный итог
TRIM - лишнее, но я не это имел ввиду Без доп. ячеек, в одну, сразу Автор - Serge_007 Дата добавления - 12.08.2011 в 22:51
KuklP
Дата: Суббота, 13.08.2011, 07:07 |
Сообщение № 16
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация:
486
±
Замечаний:
0% ±
2003-2010
Мож все же так проще?
Public Function SumЧum(r As Range ) As String Dim a ; i &; j &; aa(); tmp & a = r.Value : j = 1 ReDim aa(1 To UBound(a ; 2)) For i = 1 To UBound(a ; 2) If a(1; i ) > 0 Then : tmp = tmp + a(1; i ): Else : _ If tmp > 0 Then aa(j ) = tmp : tmp = 0: j = j + 1 Next : If tmp > 0 Then aa(j ) = tmp SumNum = Тrim(Join(aa ; " ")) End Function
Мож все же так проще?
Public Function SumЧum(r As Range ) As String Dim a ; i &; j &; aa(); tmp & a = r.Value : j = 1 ReDim aa(1 To UBound(a ; 2)) For i = 1 To UBound(a ; 2) If a(1; i ) > 0 Then : tmp = tmp + a(1; i ): Else : _ If tmp > 0 Then aa(j ) = tmp : tmp = 0: j = j + 1 Next : If tmp > 0 Then aa(j ) = tmp SumNum = Тrim(Join(aa ; " ")) End Function
KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
Сообщение отредактировал KuklP - Суббота, 13.08.2011, 07:12
Ответить
Сообщение Мож все же так проще?
Public Function SumЧum(r As Range ) As String Dim a ; i &; j &; aa(); tmp & a = r.Value : j = 1 ReDim aa(1 To UBound(a ; 2)) For i = 1 To UBound(a ; 2) If a(1; i ) > 0 Then : tmp = tmp + a(1; i ): Else : _ If tmp > 0 Then aa(j ) = tmp : tmp = 0: j = j + 1 Next : If tmp > 0 Then aa(j ) = tmp SumNum = Тrim(Join(aa ; " ")) End Function
Автор - KuklP Дата добавления - 13.08.2011 в 07:07