powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Цикл для суммирования отклонений
5 сообщений из 5, страница 1 из 1
Цикл для суммирования отклонений
    #38249531
krisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Подскажите, пожалуйста, как написать макрос, для решения подобной задачи:
имеется 2400 строк на листе, и для каждой строки необходимо для последних 54 столбцов выполнить следующее - из каждой такой ячейки нужно вычесть число, которое находится, скажем, в 5 столбце, и если разность больше 0, то нужно просуммировать данные значения
Отчасти представляю, как такое записать в Delphi, но вот в ВБА боюсь накосячить с циклом

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    Dim i As Integer
    Dim j As Integer
    Dim S As Integer
    S=0
    For i = 18 To 2403
        For j = 39 To 92
      If Cells(i, j) > Cell(i,5)
        S = S+Cells(i, j)
      End If
     



Дальше этго пока не продвинулась, идеи есть, но путаюсь в реализации
...
Рейтинг: 0 / 0
Цикл для суммирования отклонений
    #38249559
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krisha,

Легче и быстрее через формулу массива, примерный вид на скрине. Или подобная формула
Код: vbnet
1.
{=СУММ(ЕСЛИ(C2:I23-A2:A23>0;C2:I23;0))}


...
Рейтинг: 0 / 0
Цикл для суммирования отклонений
    #38249561
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и код почти такой же, вот под мой пример. Для вашего поменяйте I, J на верные

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub T()
    Dim I As Long, J As Long, Summ As Long
    Dim wsList As Worksheet
    Set wsList = ThisWorkbook.Sheets("Ëèñò1")
    
    For I = 2 To 23
        For J = 3 To 9
            If wsList.Cells(I, J) > wsList.Cells(I, 1) Then
                Summ = Summ + wsList.Cells(I, J)
            End If
        Next
    Next
    
    MsgBox Summ, vbInformation
End Sub
...
Рейтинг: 0 / 0
Цикл для суммирования отклонений
    #38249584
krisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLAD, спасибо! Но у меня вылетает ошибка
Run-time error '9',
subscript out of range

что это значит?
...
Рейтинг: 0 / 0
Цикл для суммирования отклонений
    #38249590
krisha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLAD,
сам код у меня следующий:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Sub R

    Dim I As Long, J As Long, Summ As Long
    Dim wsList As Worksheet
    Set wsList = ThisWorkbook.Sheets("Ëèñò1")
    
    For I = 18 To 2403
        For J = 38 To 91
            If wsList.Cells(I, J) > wsList.Cells(I, 17) Then
                Summ = Summ + wsList.Cells(I, J) - wsList.Cells(I, 17)
            End If
        Next
        wsList.Cells(I, 95) = Summ
    Next
        MsgBox Summ, vbInformation
        
End Sub
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Цикл для суммирования отклонений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]