Страницы: 1
RSS
Как вычислить диапазон для каждого наименования продукции VBA
 
Добрый день. Уважаемые форумчане нужна помощь в написании макроса ( VBA до этого не изучал ).
Суть проблемы  есть файл с данными ( Продукция, наименование организации и остаток)
Необходимо обнулить все отрицательные значения для данной продукции и занести в столбец рядом.
Я понимаю , что функцию ЕСЛИ никто не отменял.
Часть макроса  я написал и цикл организовал перебора значений, а вот переход к другому виду продукции мозгов пока не хватает.
Изменено: dedua - 20.09.2019 14:04:50
 
Ячейка А23 УЖЕ будет в файле (в исходных данных)?
 
Так можно это дело сделать сразу в сводной и никаких макросов не нужно.

Далее по коду - зачем вам вообще наименования?
Код
Sub разброс()
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row    ' количество строк в диапазоне

' цикл перебора значений в диапазоне и действий над ними
    For i = 1 To LastRow
        If Cells(i, 3).Value < 0 Then
            Cells(i, 4) = 0
        Else
            Cells(i, 4) = Cells(i, 3).Value
        End If
    Next i
End Sub

Разве этого не достаточно?
Изменено: Dima S - 20.09.2019 14:35:29
 
Цитата
Юрий М написал:
Ячейка А23 УЖЕ будет в файле (в исходных данных)?
да, этот лист и будет  исходными данными
может я не правильно понял но  количество строк с продукцией зависит от количества покупателей
Изменено: dedua - 20.09.2019 14:30:42
 
Цитата
Dima S написал:
Так можно это дело сделать сразу в сводной и никаких макросов не нужно.
это и есть сводная. В дальнейшем файл будет дорабатываться. И все "минуса" будут закрывать "положительные значения"
 
Цитата
dedua написал:
это и есть сводная
нет. Это обычный диапазон с данными.
Я имел ввиду объект сводная таблица.
 
Чтобы макрос пропускал строки с Итогами еще 1 IF добавил
Код
Sub perebor()
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To LastRow
    If Cells(i, 1) Like "*Итог" Then GoTo Line1
        If Cells(i, 3).Value < 0 Then
            Cells(i, 4) = 0
        Else
            Cells(i, 4) = Cells(i, 3).Value
        End If
Line1:
    Next i
End Sub
Изменено: Hellmaster - 20.09.2019 14:42:48
 
Ещё вариант.
 
В столбце "С" должны быть вот такой результат
Страницы: 1
Наверх