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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2010, 08:59   #1
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию Как узнать что строка является корневым узлом группы

Добрый день.
Есть задачка.
Пробежать по столбцу файла
Строки в файле сгруппированы по разным признаком.
1. Заменить на 0 все отрицательные значения.
2, Пересчитать суммы для каждой группы и проставить их по корневым узлам.
Алгоритм видится следующим:
Бежим в цикле по нужному столбцу если встретили значение < 0, то заменяем на ноль.
При этом считаем сумму.
При каждой итерации проверяем является ли строка корневым узлом группы.
Если да то запоминаем индекс строки дабы потом проставить в нее значение суммы.
С 1 вопросом проблем нет.
А вот со вторым непонятно. Как узнать что строка является корневым узлом группировки?
Конечно можно просто создать массив значений корневых узлов и при каждой итерации проверять, а не корневой ли это узел.
НО хочется более гибкого решения. Ибо не понятно а вдруг заголовок корня поменяется и усе придется править макрос.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 08.10.2010, 09:17   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

1. прикрепляете пример файла
2. в этом примере помечаете (цветом или примечаниями), что надо пересчитать и заменить
EducatedFool вне форума Ответить с цитированием
Старый 08.10.2010, 09:32   #3
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Конечно спасибо. Но я не хочу, чтоб это сделал кто-то за меня. Я хочу сам это реализовать. Так что просто необходим ответ на сабж.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 11.10.2010, 03:00   #4
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Всем спасибо.
Вот может кому еще будет нужно.
Код:
Sub CheckGroupAndSum()
Dim R As Range, i As Integer, s As Double, o As Integer
s = 0
For Each R In ActiveSheet.UsedRange.Rows
If R.OutlineLevel > 1 Then
    If Cells(R.Row, 2) > 0 Then
        s = s + Cells(R.Row, 2)
    Else
        Cells(R.Row, 2) = 0
    End If
Else
    If o > 0 Then
        Cells(o, 2) = s
        o = R.Row
        s = 0
    Else
        o = R.Row
    End If
End If
Next
    Cells(o, 2) = s
End Sub
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать, входит ли данная строка в подстроку Dasharnb777 Общие вопросы .NET 2 21.09.2010 15:36
Проверить является ли строка палиндромом. rrrl Microsoft Office Excel 2 30.05.2010 18:33
Как узнать какой символ является розделителем дроной части DarkEvil Общие вопросы Delphi 8 13.08.2009 08:05
Как узнать существует ли в БД нужная строка? kiber0net0 БД в Delphi 1 02.09.2008 21:31
Как программно узнать не является ли слово в строке числом? SkAndrew Общие вопросы Delphi 10 07.05.2008 13:03