Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2009, 17:50   #1
ashot-nnov
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 14
По умолчанию Сохранение переменного значения

Доброго времени суток!

Знатоки, я столкнулся с задачей такого плана:

№ Текущий остаток № 1 № 2 № 3
Тип1 2965900
Тип2 2542490
Тип3 2620650
Тип4 1842850
Тип5 896000


Имеем такую таблицу, только в сотни раз больше.
Столбец "текущий остаток" постоянно меняется в меньшую сторону (раз в 10 или 5 минут)
Но периодически возрастает до первоначального уровня.
Требуется поймать значение минимума и подставить в следующий столбец (№1, №2, № 3........ №n)

Кое-какие наброски есть, но воплотить их в жизнь не получается
ashot-nnov вне форума Ответить с цитированием
Старый 04.12.2009, 21:20   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте ashot-nnov.
Ваш пост совсем не похож на вопрос или просьбу.
"я столкнулся...", "Имеем...таблицу..", "Требуется поймать...", "воплотить...не получается" - а помощь в чём нужна?
очень мало информации для "угадывания" Вашей задачи, напишите какую помощь хотели бы получить и желательно присовокупить архивчик с файликом - образцом.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 04.12.2009, 21:42   #3
ashot-nnov
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 14
По умолчанию


Может не совсем корректно выразился, поясняю:
Столбец "остаток" формируется из внешнего источника.
При достижении определённого минимума (всегда разного) он вновь возвращается к максимальной сумме.
Так как обновление столбца проходит автоматически установить этот минимум весьма проблематично.
Вопрос следующий: возможно ли отследить значения минимума за несколько циклов и выстроить их в соответствующих столбцах.
Вложения
Тип файла: rar temp.rar (3.8 Кб, 13 просмотров)
ashot-nnov вне форума Ответить с цитированием
Старый 05.12.2009, 12:56   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте ashot-nnov.
С выполнением Вашей задачи, если я её правильно понял, может справиться подобный код помещенный в модуль книги:
Код:
Private Sub Workbook_Open()
    ' startCheckRng  'строка применима для автозапуска кода, при открытии книги
End Sub
Sub startCheckRng()
    CheckRng
    Application.OnTime Now + TimeSerial(0, 0, 5), "ЭтаКнига.startCheckRng"
    'проверка по таймеру - каждые 5 минут
End Sub
Sub CheckRng()
Dim rng As Range, vArr() As Variant
Set rng = Sheets(1).Range("a2:h4") 'диапазон "сверки"
vArr = rng.Value
For i = 1 To UBound(vArr)
    For j = 8 To 3 Step -1
        If Len(vArr(i, j)) = 0 And Len(vArr(i, j - 1)) = 0 Then
        ElseIf Len(vArr(i, j)) = 0 And vArr(i, j - 1) < vArr(i, 2) Then
            vArr(i, j) = vArr(i, 2): Exit For
        ElseIf vArr(i, j) > vArr(i, 2) Then
            vArr(i, j) = vArr(i, 2): Exit For
        ElseIf j = 3 And Len(vArr(i, 3)) = 0 Then
            vArr(i, j) = vArr(i, 2): Exit For
        End If
    Next
Next
rng.Value = vArr
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 05.12.2009, 16:07   #5
ashot-nnov
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 14
По умолчанию

Спасибо, Евгений!
Буду пробовать.
ashot-nnov вне форума Ответить с цитированием
Старый 09.12.2009, 21:59   #6
ashot-nnov
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 14
По умолчанию

Евгений, здравствуйте!
Вообщем попробовал, результат на совсем тот который исходно хотелось:
В нашем файле размер диапазона ячеек B2, B3, B4 .... Bn. определяются переменной "n".
Каждому Продукту соответствует свой остаток.
По каждому Продукту постоянно идёт уменьшение до определённого порога, после чего опять возрастают к исходному максимуму. Цикл постоянно повторяется.
Меня интересует по каждому продукту поймать наименьшее значение за 1-ый цикл, 2-ой и т.д.
И в конечном счете подставить эти минимальные значения по каждому продукту в соответствующий столбец №1, №2, №3, ... №m

p.s. таким образом у нас должно получится так, что как только остаток по каждому продукту увеличился, он берёт предыдущий остаток (минимальный) и подставляет его в столбец по порядку, затем через 5 минут цикл повторяется.

Есть мысль вообще добавить столбец для временных значений.
таким образом
проверяем условие: если текущий остаток > последнего зафиксированного, то последний min остаток копируется в столбец "№1", в противном случае временное значение заменяется ещё более меньшим., дальше цикл повторяется для столбца "№2". И так для каждого Продукта. Надеюсь что смог объяснить
Вложения
Тип файла: rar Книга1.rar (4.3 Кб, 10 просмотров)
ashot-nnov вне форума Ответить с цитированием
Старый 10.12.2009, 01:29   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Предлагаю свой вариант на шесть переменных,при необходимости добавите,сколько необходимо.
Без циклов и массивов и дополнительных столбцов.
Таймер поставил на 2 минуты,так как данные могут менятся и через 3 минуты

Добавил вариант на любое количество переменных,но не более естественно 250
Вложения
Тип файла: rar Вариант.rar (14.1 Кб, 10 просмотров)
Тип файла: rar Вариант20.rar (14.7 Кб, 12 просмотров)
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 10.12.2009 в 11:41.
doober вне форума Ответить с цитированием
Старый 10.12.2009, 22:00   #8
ashot-nnov
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 14
По умолчанию

Опять немного не то))))))
Как только увеличивается остаток - последнее зафиксированное значение, записывается в столбец по порядку
В итоге написал сам:

Sub proba()
Dim str As Long 'диапазон строка
Dim kol As Long 'кол-во строк
Dim stolb As Long 'столбцы
Dim ns As Long 'перебор строк
kol = Sheets("Сводная").Range("A2")
For str = 1 To kol
ns = 1
ns = ns + str
If Cells(ns, 2) >= Cells(ns, 3) Then
Cells(ns, 3) = Cells(ns, 2)
Else
For stolb = 3 To 32
stl = 0
stl = stolb + 1 'первый столбец куда записывается последнее минимальное значение
Cells(ns, stl) = Cells(ns, 3)
Cells(ns, 3) = 0 'обнуляет последнее сохраненное значение
Next stolb
End If
Next str
End Sub

3 вопроса:
1) Как прописать условие чтобы не заменялись значения в заполненных столбцах, а дописывались в следующих.
2) Убрать заполнение всей строки (если запустить макрос, то при увеличении остатка одного из продуктов, отличного от последнего сохраненного значения в столбце "временные значения", заполняется вся строка)
3) Предполагается что столбцы - это дни месяца. Как сделать чтобы сохраняемые значения заполнялись в соответствии с текущим днем месяца. (остаток уменьшается в течении нескольких дней). т.е. если остаток увеличился 14 числа, то и минимальное значение которое было зафиксировано отображается в 14 столбце
Вложения
Тип файла: rar Книга1.rar (5.9 Кб, 9 просмотров)
ashot-nnov вне форума Ответить с цитированием
Старый 10.12.2009, 23:53   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Вам надо составить таблицу минимумов по каждому полному циклу?
Продукты своего минимума достигают в один и тот же временной интервал,или раз ные интервалы у каждого?
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 10.12.2009 в 23:58.
doober вне форума Ответить с цитированием
Старый 12.12.2009, 09:41   #10
ashot-nnov
Пользователь
 
Регистрация: 04.12.2009
Сообщений: 14
По умолчанию

нет, только по самому минимальному.
пример:
сегодня 12 число, остаток по продуктам уменьшается в течении дня.
у Продукта №35 остаток уменьшился до 300 тыс. и вернулся к 3 млн.
Нам надо чтобы в строке с продуктом №35, в столбце № 12 записалось значение - 300 тыс.
Свой минимум у каждого разный.
ashot-nnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение БД Andrey174rus Общие вопросы Delphi 12 12.10.2009 23:56
сохранение tolikman Microsoft Office Excel 6 30.06.2009 14:49
Массивы переменного размера в стеке Voyager Общие вопросы C/C++ 3 10.04.2008 11:33
Сохранение Lonix Общие вопросы Delphi 1 22.04.2007 00:15