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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2009, 10:41   #1
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию автоматическое суммирование

Здравствуйте ВСЕМ!
ниже имеется файл...
если вы набьёте цифры в фиолетовые строки в столбцах "Полугодие" и "Итог", то увидите что Общий Итог и ИТОГ вычисляется автоматически!
имеется вба-код в этом файле...
у меня не получается одна вещица((
как сделать так, что в этих самых фиолетовых строках, например, в этих же столбца(Полугодие и Итог) выводилось сумма нижестоящих жёлтых строк?
причём:
1) опираться надо НЕ на жёлтый цвет и НЕ на выравнивание по левому краю
2) учитывать нужно тот факт, что количество столбцов может быть море и постоянно меняться, НО они находятся будут между столбцами Валюта и Примечание ну и стабильно последний столбец будет стоят ВЕЧНО))
3) эти самые жёлтые строки тоже постоянно меняются, до удаляться, то добавляются, так что =СУММ() НИКАК не подходит
Как это реализовать? заранее спасибо!!!
Вложения
Тип файла: rar Примерчик.rar (59.0 Кб, 16 просмотров)
Артур Иваныч вне форума Ответить с цитированием
Старый 08.12.2009, 10:44   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
=СУММ() НИКАК не подходит
тогда может ПРОМЕЖУТОЧНЫЕ.ИТОГИ.?
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 08.12.2009, 11:10   #3
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Здравствуйте, Артур Иваныч.
Очень знакомый фалик. Только нет формочек. Вы сайт www.excel-vba.ru не посещали? Если да, то может там в форму суммирования добавить еще и общее суммирование?
По теме: решение хотите получить формулой или любой вариант подойдет?
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 08.12.2009, 11:19   #4
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

ЭЭЭЭ
не помню, посещал иль нет
вроде ток щас с этой проблемой сталкнулся
мне НЕ нужны =СУММ() и прочие подобные функции
мне просто нужен результат
чтоб сам вба считал
чтоб аналогино было тому, что у меня есть в файле для строк ИТОГО
просто эти самые жёлтые строки могут постоянно меняться
то увеличиваться то удаляться, а результат в оранжевых строках чтоб всегда был правильным
Артур Иваныч вне форума Ответить с цитированием
Старый 08.12.2009, 11:21   #5
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

посещать-то посещал
просто там не было такого файла
я вот щас ток выгрузил
посмотрите как там суммирование происходит
вот мне именно такое суммирование бы и для оранжевых строк
Артур Иваныч вне форума Ответить с цитированием
Старый 08.12.2009, 11:22   #6
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Вариант формулой. При необходимости можно формулу вставлять через VBA.
Вложения
Тип файла: rar Примерчик.rar (18.6 Кб, 14 просмотров)
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 08.12.2009, 11:25   #7
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

Спасибо конечно
но это не подходит
говорюж не нужны мне такие формулы
мне нужно чтоб в вба было написано и считало там
так как:
1) количество оранжевых постоянно будет меняться
2) и сами фиолетовые строки вместе с оранжевыми будут то увиличиваться то уменьшаться
Артур Иваныч вне форума Ответить с цитированием
Старый 08.12.2009, 11:54   #8
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Я вот не понимаю, что мешает сделать в макросе подсчет этой формулой, а затем преобразовать формулу в значение?
Цитата:
1) количество оранжевых постоянно будет меняться
Какое это имеет отношение к формуле? Ей побоку оранжевые. Она желтые подсчитывает.
Цитата:
2) и сами фиолетовые строки вместе с оранжевыми будут то увиличиваться то уменьшаться
Вообще не понял. Как фиолетовые будут увеличиваться и уменьшаться? И опять же. Как это может сказаться на формуле?
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 08.12.2009, 12:29   #9
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

фиолетовые сами по себе не бывают
то есть в них группируются эти самые жёлтые приславутые строки
Вот и в таблице фиолетовые строки вместе с группирующимися в него жёлтыми могут расти в количестве или уменьшаться и сами жёлтые "в группе жёлтых" могу увеличиваться или уменьшаться!
мне =СУММ() и подобные не нужны
мне нужно чтоб в эксель был сразу результат, сразу цифра!
это можно сказать условие

вот есть наработка, которую я пытаюсь сам доделать:
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i%, j%
  Dim lLastCol As Long
    lLastCol = cells(9, Columns.Count).End(xlToLeft).Column
    
    Dim rFndRng As Range, lCol As Long
    Dim rFndRn As Range, rFnd As Range, rFndR As Range
    Set rFndRng = ActiveSheet.UsedRange.Find("ИТОГО", , xlValues, xlWhole)
    If rFndRng Is Nothing Then MsgBox "ИТОГО", vbInformation, "Отсутствует строка": Exit Sub
    
    Set rFndRn = ActiveSheet.UsedRange.Find("№ ИП", , xlValues, xlWhole)

    For i = 10 To 11
        If cells(i, 2) Like "*ИП*" Then
        cells(rFndRng.Row, lLastCol) = cells(i, lLastCol)
            For j = i + 1 To rFndRng.Row - 1
                If cells(j, 2) Like "*ИП*" Then
                    cells(rFndRng.Row, lLastCol) _
                    = cells(rFndRng.Row, lLastCol) + cells(j, lLastCol)
                End If
            Next j
        End If
    Next i
    
'считаем фиолетовые:
    For i = 10 To rFndRng.Row
    If cells(i, 2) = "" Then
    lCol = cells(i, lLastCol)
    For j = rFndRn.Row To lCol
    cells(rFndRn.Row, lLastCol) = Application.Sum(Range(cells(rFndRn.Row + 1, lLastCol), cells(j, lLastCol)))
    
    Next j
    End If
    Next i
End Sub
Артур Иваныч вне форума Ответить с цитированием
Старый 08.12.2009, 14:11   #10
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

Код:
    For i = 10 To rFndRng.Row
    If cells(i, 2) = "" Then
    lCol = cells(i, lLastCol)
    For j = rFndRn.Row To lCol
    cells(rFndRn.Row, lLastCol) = Application.Sum(Range(cells(rFndRn.Row + 1, lLastCol), cells(j, lLastCol)))
    
    Next j
    End If
    Next i
врдь всё считает
но перецикливается((
и потом только для 1ой фиолетовой строки считает
Артур Иваныч вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Суммирование рядов в С++ defol-777 Помощь студентам 2 05.05.2010 11:10
Суммирование Артур Иваныч Microsoft Office Excel 4 02.12.2009 20:20
Суммирование SlavaSH БД в Delphi 15 22.01.2009 12:29
суммирование от и до.... snakezx Microsoft Office Excel 1 28.11.2008 15:38
Суммирование значений БД Andi2118 БД в Delphi 3 12.10.2008 20:25