Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вложенные циклы

23K
26 февраля 2008 года
ttat01
17 / / 02.10.2007
Есть два листа, на одном даны коды клиентов и сумму уплаченную ими за товары, в формате:
код1 - 150 у.е.
код1 - 150 у.е.
код2 - 1500 у.е.
код2 - 2750 у.е.
код2 - 1000 у.е.
код3 - 1500 у.е.
код3 - 2750 у.е.
код4 - 1000 у.е.
тоисть клиенты делают по несколько покупок
Нужно на другой лист вывести всех клиентов с суммой покупки больше 2000
Написал код, немного коряво и в нем ошибка, помогите ее найти и если не трудно написать свой более понятный вариант. Спасибо
Код:
Range("B3").Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlYes
With Worksheets("CustOrders").Range("B4")
  OrderSum = 0
    Do While .Offset(i, 0) <> ""
      If .Offset(i, 0) = "" Then
        Exit Do
        Else
        Do While .Offset(i, 0) = .Offset(i + 1, 0)
            If .Offset(i, 0) = .Offset(i + 1, 0) Then
                OrderSum = OrderSum + .Offset(i, 1).Value
                i = i + 1
                If OrderSum > 2000 Then
                    Worksheets("CustOrders2").Range("A" & (4 + j)).Value = .Offset(i, 0)
                    Worksheets("CustOrders2").Range("B" & (4 + j)).Value = OrderSum
                     OrderSum = 0
                    j = j + 1
                End If
            Else
              OrderSum = 0
            i = i + 1
            End If
             
        Loop
        i = i + 1
     End If
    Loop
End With
275
26 февраля 2008 года
pashulka
985 / / 19.09.2004
ttat01, Рекомендую использовать расширенный фильтр, используя в качестве критерия отбора - формулу. Это позволит вообще обойтись без применения циклов, а пример подобной фильтрации можно сказать здесь.
23K
27 февраля 2008 года
ttat01
17 / / 02.10.2007
Отличное решение с помощью автофильтра. Спасибо. Может кому - то не будет сложно выполнить то же самое, но с помощью вложенных цыклов. Вы спросите зачем? Все ради обучения.
P.S. Даже не представляю, что бы я делал без помощи экспертов.
251
27 февраля 2008 года
SkyMаn
1.7K / / 31.07.2007
Цитата: ttat01

P.S. Даже не представляю, что бы я делал без помощи экспертов.


Читал бы книги, дерзал бы сам. "Эксперты" ведь тоже учились, а еще тогда форумов не было, только не всем доступное FIDO. Но были тогда (а сегодня - еще больше) много библиотек, книг.. А еще - было желание учить все самому. Без него - всегда придется бегать на форумы.

275
27 февраля 2008 года
pashulka
985 / / 19.09.2004
[quote=ttat01]Отличное решение с помощью автофильтра. Спасибо.[/quote]

Уточнение : c помощью расширенного фильтра

[quote=ttat01]Может кому - то не будет сложно выполнить то же самое, но с помощью вложенных цыклов. Вы спросите зачем? Все ради обучения.[/quote]

Без обид, но решение задач подобным способом не лучший вид обучения. А если использование цикла действительно необходимо, то вполне достаточно использовать один цикл, например For Each Next.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог