Страницы: 1
RSS
Подсчет суммы значений после пустой строки
 
Добрый день.

Прошу помочь с решением следующего вопроса:

Между категориями товаров есть пустая строка, нужно, чтобы в эту пустую строчку суммировались вышестоящие значения количества, веса и объема, при этом выделив итог жирным и покрасив в желтый цвет, если это возможно.

Заранее спасибо, документ с примером прилагаю:
Изменено: CkpuIIa4 - 18.05.2018 13:03:50
 
Добрый день. Алгоритм может быть таким:
1. Ставите фильтр на всю таблицу
2. В ячейке В3 пишите формулу =СУММЕСЛИ($A:$A;$A2;B:B)
3. Фильтруете первый столбец =(Пустые)
4. Выделяете все ячейки, где должны быть итоги начиная с В3
5. Ставите курсор в строку формул и не снимая выделения нажимаете Ctrl+Enter
6. Раскрашиваете выделенный диапазон по желанию
 
Цитата
чтобы в эту пустую строчку суммировались вышестоящие значения количества, веса и объема, при этом выделив итог жирным и покрасив в желтый цвет
Код
Sub iSumma()
Dim Rng As Range
Dim j As Integer
For j = 2 To 4
  For Each Rng In Columns(j).SpecialCells(xlCellTypeConstants).Areas
    Rng.Cells(Rng.Count + 1, 1).Value = WorksheetFunction.Sum(Rng)
    Rng.Cells(Rng.Count + 1, 1).Font.Bold = True
    Rng.Cells(Rng.Count + 1, 1).Interior.ColorIndex = 6
  Next
Next
End Sub
 
Kuzmich, Огромное спасибо, все отлично работает.
 
Kuzmich, Подскажите, пожалуйста, если вместе со строчками 2-4 я хочу задействовать 6, то как изменится команда? Пробовал "For j = 2 To 4 and 6", "For j = 2 To 4; 6". Ничего не выходит. Заранее спасибо.
 
Цитата
CkpuIIa4 написал:
Kuzmich , Подскажите, пожалуйста, если вместе со строчками 2-4 я хочу задействовать 6, то как изменится команда? Пробовал "For j = 2 To 4 and 6", "For j = 2 To 4; 6". Ничего не выходит. Заранее спасибо.
Можно тупо if добавить:
Цитата
Sub iSumma()
Dim Rng As Range
Dim j As Integer
For j = 2 To 6
 If j = 2 Or j = 3 Or j = 4 Or j = 6 Then
   For Each Rng In Columns(j).SpecialCells(xlCellTypeConstants).Areas
     Rng.Cells(Rng.Count + 1, 1).Value = WorksheetFunction.Sum(Rng)
     Rng.Cells(Rng.Count + 1, 1).Font.Bold = True
     Rng.Cells(Rng.Count + 1, 1).Interior.ColorIndex = 6
   Next
 End If
Next
End Sub
А правильнее было бы цикл переписать, хотя и так работает.
 
Цитата
LookForLoop написал:
Можно тупо if добавить:
Лучше разумно добавить
If j <>5 then, что заменит   If j = 2 Or j = 3 Or j = 4 Or j = 6 Then
А если вдруг будут 8 и 10 и ….
то
Select Case J
Case 2 to 4 ,6
....
По вопросам из тем форума, личку не читаю.
 
LookForLoop, цитировать нужно... когда нужно, а не бездумно жать на кнопку.
Кнопка оформления кода в сообщении - <...>
Прошу вернуться и исправить сообщение.
Страницы: 1
Наверх