Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/30: Рейтинг темы: голосов - 30, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 25

Сумма по столбцам

22.08.2011, 23:37. Показов 6522. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код для суммирования значений в ячейках одного столбца, размер которого может меняться
Visual Basic
1
2
3
4
5
6
summ = 0
        For i = 2 To Worksheets("Остатки").Cells(Rows.Count, "B").End(xlUp).Row
            summ = summ + Worksheets("Остатки").Range("K" & i)
        Next i
summN = Worksheets("Остатки").Cells(Rows.Count, "B").End(xlUp).Row + 1
Worksheets("Остатки").Range("K" & summN).Value = summ
Как прописать цикл, чтобы эта сумма вычислялась еще по 9 столбцам.
Столбец В - категория
Стобец С - наименование
и далее К, L... cтобцы с числами, которые и нужно просуммировать
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.08.2011, 23:37
Ответы с готовыми решениями:

Образовать векторы, элементы которых есть сумма элементов новой матрицы по строкам и по столбцам
Объединить две матрицы А и В в одну, при этом А(N, L), В(К,L) N=4, K=3, L=7. Образовать векторы,...

В прямоугольной матрице найти сумму элементов, принадлежащих первой строке, последней строке, первому столбцу и последнему столбцу
в прямоугольной матрице найти сумму элементов, принадлежащих первой строке, последней строке,...

Суммы каждого столбца и номер столбца с максимальной суммой
Суммы каждого столбца и номер столбца с максимальной суммой. CLS DIM Z(5, 4) DATA...

14
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
23.08.2011, 02:33
Самый простой вариант. Если нужно увеличить количество столбцов
то необходимо дописать их название в массив t(j) и все должно работать с большим числов.
Вложения
Тип файла: xls Подсчет_остатков.xls (34.5 Кб, 56 просмотров)
1
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
23.08.2011, 07:57
Цитата Сообщение от all_angarsk Посмотреть сообщение
Самый простой вариант. Если нужно увеличить количество столбцов
то необходимо дописать их название в массив t(j) и все должно работать с большим числов.
Чот вы перемудрили
думаю так проще

Visual Basic
1
2
3
4
5
6
7
For j = 2 To 9
    For i = 2 To Worksheets("Остатки").Cells(Rows.Count, j).End(xlUp).Row
        summ = summ + Worksheets("Остатки").Range("K" & i) ' здесь если надо измените К
    Next i
Next
summN = Worksheets("Остатки").Cells(Rows.Count, j).End(xlUp).Row + 1
Worksheets("Остатки").Range("K" & summN).Value = Sum ' здесь если надо измените К
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 25
23.08.2011, 09:16  [ТС]
мне ведь нужно чтобы оно и К меняло само, т.е. проходило по столбцам начиная с К
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
23.08.2011, 09:24
Цитата Сообщение от Chip&Dale Посмотреть сообщение
мне ведь нужно чтобы оно и К меняло само, т.е. проходило по столбцам начиная с К
Visual Basic
1
2
3
4
5
6
7
8
For j = 2 To 9
    For i = 2 To Worksheets("Остатки").Cells(Rows.Count, j).End(xlUp).Row
        summ = summ + Worksheets("Остатки").cells(i, j+9) '  начиная со столбца К
    Next i
 
   summN = Worksheets("Остатки").Cells(Rows.Count, j).End(xlUp).Row + 1 
   Worksheets("Остатки").cells(summN, j+9).Value = Sum  '  начиная со столбца К
Next
0
763 / 270 / 57
Регистрация: 13.12.2009
Сообщений: 1,110
23.08.2011, 10:39
Watcher_1
Мысль правильная, но реализацая не подходит.
Я исходил из простоты изменения не специалистом.
Миниатюры
Сумма по столбцам  
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
23.08.2011, 11:00
В моем коде абсолютно нет ничего сложного.
Кто хоть чуть чуть знает программирование без труда разберется
А не специалисту значит надо найти специалиста %)))))))))
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 25
23.08.2011, 14:26  [ТС]
Почему-то на 4 строке выпадает ошибка
Run-time error '13': Type mismatch

Visual Basic
1
2
3
4
5
6
7
  For j = 2 To 9    
   For i = 2 To Worksheets("Остатки").Cells(Rows.Count, j).End(xlUp).Row         
      summ = summ + Worksheets("Остатки").cells(i, j+9) '  начиная со столбца К     
   Next i      
summN = Worksheets("Остатки").Cells(Rows.Count, j).End(xlUp).Row + 1     
Worksheets("Остатки").cells(summN, j+9).Value = Sum  '  начиная со столбца К 
Next  j
Добавлено через 4 минуты
Количестов столбцов фиксировано. Возможно изменение в количестве строк
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
23.08.2011, 14:26
Я не телепат, дайте файл для анализа...
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 25
23.08.2011, 14:30  [ТС]
Вот весь файл
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Private Sub CommandButton1_Click()
ActiveWorkbook.Worksheets(1).Range("A:C").ShrinkToFit = True
Dim DT As String
Dim summ As Long
Dim i As Integer
'Dim LastCell_new As Range
Dim iEnd As Integer
Dim summB As Integer
Dim summC As Integer
Dim summN As Integer
Dim j As Integer
Dim summX As Long
DT = CStr(Now)
DT_new = Left(DT, 10)
Cells(1, 1).Value = DT_new
'For i = 2 To 106
    'If (ActiveSheet.Range("B" & i).Value = "") And (ActiveSheet.Range("C" & i).Value = "") Then
        'ActiveSheet.Range("B" & i).EntireRow.Delete
    'End If
'Next i
i = 1
Do
i = i + 1
If ActiveSheet.Range("A" & i).Value = "" Then Exit Do
    If (ActiveSheet.Range("B" & i).Value = "") And (ActiveSheet.Range("C" & i).Value = "") Then
        ActiveSheet.Range("B" & i).EntireRow.Delete
        i = i - 1
    End If
Loop
Set LastCell = UsedRange.EntireRow.SpecialCells(xlCellTypeLastCell)
    Range("A1", LastCell).Select
    Selection.Copy
    Worksheets("äîëãè").Activate
    ActiveSheet.Range("A1").Select
    ActiveSheet.Paste
'Set LastCell = Worksheets("äîëãè").UsedRange.EntireRow.SpecialCells(xlCellTypeLastCell)
'Set LastCell_new = LastCell.Offset(1, 0)
summ = 0
iEnd = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    For i = 2 To iEnd + 1
        summ = summ + ActiveSheet.Cells(i, 2)
    Next i
summB = iEnd + 1
ActiveSheet.Cells(summB, 2).Value = summ
summ = 0
    For i = 2 To iEnd + 1
        summ = summ + ActiveSheet.Cells(i, 3)
    Next i
summC = iEnd + 1
ActiveSheet.Cells(summC, 3).Value = summ * (-1)
Worksheets("áàëàíñ").Activate
ActiveSheet.Cells(2, 1).Value = Worksheets("äîëãè").Cells(1, 1).Value
ActiveSheet.Cells(3, 5).Value = Worksheets("äîëãè").Cells(summC, 3).Value
ActiveSheet.Cells(3, 8).Value = Worksheets("äîëãè").Cells(summB, 2).Value
Worksheets("îñòàòêè").Activate
For j = 2 To 9
   For i = 2 To Worksheets("Îñòàòêè").Cells(Rows.Count, j).End(xlUp).Row
      summ = summ + Worksheets("Îñòàòêè").Cells(i, j + 9) '  íà÷èíàÿ ñî ñòîëáöà Ê
   Next i
summN = Worksheets("Îñòàòêè").Cells(Rows.Count, j).End(xlUp).Row + 1
Worksheets("Îñòàòêè").Cells(summN, j + 9).Value = Sum '  íà÷èíàÿ ñî ñòîëáöà Ê
Next j
End Sub
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
23.08.2011, 14:32
А данные где? %))))
Я же не знаю вашу структуру...
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 25
23.08.2011, 14:40  [ТС]
Вот файл
Вложения
Тип файла: xls 1.xls (86.0 Кб, 30 просмотров)
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
23.08.2011, 14:49
Там у вас пробелы, поэтому так
Visual Basic
1
2
3
4
5
6
7
8
9
For j = 2 To 9
   For i = 2 To Worksheets("Остатки").Cells(Rows.Count, j).End(xlUp).Row
      If Trim(Worksheets("Остатки").Cells(i, j + 9)) <> "" Then
        summ = summ + Worksheets("Остатки").Cells(i, j + 9) '  начиная со столбца К
      End If
   Next i
summN = Worksheets("Остатки").Cells(Rows.Count, j).End(xlUp).Row + 1
Worksheets("Остатки").Cells(summN, j + 9).Value = Sum '  начиная со столбца К
Next j
1
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 25
23.08.2011, 15:46  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
summ = 0
For j = 2 To 11
   For i = 2 To iEnd
      If Trim(Worksheets("остатки").Cells(i, j + 9)) <> "" Then
        summ = summ + Worksheets("остатки").Cells(i, j + 9) '  начиная со столбца К
      End If
   Next i
summN = iEnd + 1
Worksheets("остатки").Cells(summN, j + 9).Value = summ '  начиная со столбца К
Next j
Вот в таком виде сумма по столбцу К четко все. А остальные как-то криво он считает+ там где в стобцам вообще может не быит цифр - он переносит сумму предыдущего столбца
0
 Аватар для Watcher_1
357 / 163 / 27
Регистрация: 21.06.2011
Сообщений: 350
23.08.2011, 15:50
Цитата Сообщение от Chip&Dale Посмотреть сообщение
Code
1
2
3
4
5
6
7
8
9
10
summ = 0
For j = 2 To 11
   For i = 2 To iEnd
      If Trim(Worksheets("остатки").Cells(i, j + 9)) <> "" Then
        summ = summ + Worksheets("остатки").Cells(i, j + 9) '  начиная со столбца К
      End If
   Next i
summN = iEnd + 1
Worksheets("остатки").Cells(summN, j + 9).Value = summ '  начиная со столбца К
Next j
Вот в таком виде сумма по столбцу К четко все. А остальные как-то криво он считает+ там где в стобцам вообще может не быит цифр - он переносит сумму предыдущего столбца
Подправил
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
'iEnd лучше берите по первому столбцу почему, потому что у вас в других есть пустые строки
For j = 2 To 11
   summ = 0
   For i = 2 To iEnd
      If Trim(Worksheets("остатки").Cells(i, j + 9)) <> "" Then
        summ = summ + Worksheets("остатки").Cells(i, j + 9) '  начиная со столбца К
      End If
   Next i
summN = iEnd + 1
Worksheets("остатки").Cells(summN, j + 9).Value = summ '  начиная со столбца К
Next
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.08.2011, 15:50
Помогаю со студенческими работами здесь

Подсчет суммы из одного столбца по одинаковым значениям другого столбца
Здравствуйте. Есть задание посчитать сумму значений столбца F для одинаковых значений столбца E и...

Найти сумму и количество значений в столбце матрицы и поделить количество на сумму
там нужно найти сумму и кол-во значений в столбце и поделить кол-во на сумму, и вывести ответ в...

Найти сумму положительных элементов на главной диагонали матрицы, и сумму элементов по столбцам
Задание вот такое: В данной действительной квадратной матрице порядка 5х5 найти сумму положительных...

Рассчитать сумму столбца или как в Textbox накопить сумму
Не могу разобраться Можно ли сделать так, чтобы значение вводилось из ОДНОГО Textbox. То есть ввёл...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru