Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Хитрый цикл / 10 сообщений из 10, страница 1 из 1
26.02.2006, 17:53:44
    #33566187
AlexanderKR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
Помогите пожалуйста решить следующую проблему.
На рабочем листе у меня список предприятий,
имеющих на 01.01.2006 задолженность (zadol).
Она складывается из нескольких начислений (n1, n2 и т.д.)
По каждому начислению мне нужно посчитать сумму
остатков. Сделать это нужно так:
Если (zadol-n1)>0, то n1=(zadol-n1), а n2=n1-n2 пока >=0 (n3=n2-n3 и.т.д.)
Если (zadol-n1)<=0, то n1=(zadol-n1) и остановиться.
Спасибо.
...
Рейтинг: 0 / 0
26.02.2006, 18:43:47
    #33566286
JimOrange
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
А сколько всего может быть Nx?
...
Рейтинг: 0 / 0
26.02.2006, 18:49:44
    #33566294
AlexanderKR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
Вообще-то 34 таких колонки.
Могу пример пореальнее выслать.
...
Рейтинг: 0 / 0
26.02.2006, 18:51:25
    #33566298
JimOrange
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
"Если (zadol-n1)<=0, то n1=(zadol-n1) и остановиться" - а остальные N могут при этом быть заполнены? И что в таких случаях с ними делать?
Не очень пока понятна задача...
...
Рейтинг: 0 / 0
26.02.2006, 18:54:16
    #33566302
AlexanderKR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
Если (zadol-n)<=0, то остальные n (в этой строке) уже не изменяются никак.
Должен произойти переход на другую строку.
...
Рейтинг: 0 / 0
26.02.2006, 20:47:04
    #33566423
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
Ты лучше приложи файл с тем что ты хочешь получить. Возможно, так как хочешь ты не получиться и надо будет создавать еще одну таблицу, например, на другом листе. Т.к. если данные введены в ячейки, формулу туда уже трудно вставить не изменив эти данные)))
...
Рейтинг: 0 / 0
26.02.2006, 21:23:16
    #33566450
AlexanderKR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
Вот что хотелось бы получить
...
Рейтинг: 0 / 0
26.02.2006, 21:23:55
    #33566452
AlexanderKR
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
Вот что хотелось бы получить
...
Рейтинг: 0 / 0
27.02.2006, 09:25:37
    #33566791
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хитрый цикл
Я имел ввиду не алгоритм работы, который ты описал в файле, а таблицу с итоговыми результатами. Как она должна выглядеть? Нужны ли в ней столбцы nomx, dx, нужны ли в ней nx, которые больше нуля и т.п.? Нарисуй как она должна выглядеть, потому что, похоже, в этой же таблице менять ничего нельзя, только если хитрый макрос написать.
...
Рейтинг: 0 / 0
28.02.2006, 20:38:25
    #33572043
Хитрый цикл
Не хитрый цикл, а цикл с рукурсивной процедурой. Писал на основе того примера, который ты привел. Тестировал, расширив nx до n5. Остальное за тобой.

Код: plaintext
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.
Private f As Boolean

Sub X()
    Dim rng As Range
    
    Set rng = Worksheets("Лист1").Range("A1").CurrentRegion
    Set rng = rng.Offset( 1 ,  0 ).Resize _
      (rng.Rows.Count -  1 , rng.Columns.Count)
    
    For Each rng In rng.Columns( 3 ).Cells
        f = False
        Y rng,  0 ,  1 
    Next rng
End Sub

Sub Y( _
  ByVal rng As Range, _
  ByRef lngOffset1 As Long, _
  ByRef lngOffset2 As Long)
    Dim dbl As Double

    If IsEmpty(rng.Offset( 0 , lngOffset2)) Then Exit Sub

    dbl = rng.Offset( 0 , lngOffset1) - rng.Offset( 0 , lngOffset2)
    rng.Offset( 0 , lngOffset2) = dbl
    
    If dbl >=  0  Then
        lngOffset2 = lngOffset2 +  3 
        
        If Not f Then
            f = True
            lngOffset1 = lngOffset1 +  1 
        Else
            lngOffset1 = lngOffset1 +  3 
        End If
        
        Y rng, lngOffset1, lngOffset2
    End If
End Sub
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Хитрый цикл / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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