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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2010, 12:31   #1
sirius24
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 10
По умолчанию Копирование данных по условию.

Добрый день!

Подскажите, как реализовать данную задачу. Есть диапазон данных, который обновляется каждый час. Эти данные нужно копировать на другой лист, при обновлении изначальных данных. Но есть один нюанс, нужно чтобы данные копировались в разные столбцы.
Т.е. цель такая:
Есть 24 столбца. Нужно, чтобы при обновлении данные копировались, например, в первый столбец на другом листе. При следующем обновлении исходных данных (через час), данные копировались в следующий столбец. В итоге мы получим 24 заполненные таблицы данными, которые обновлялись в течение суток.
После того, как 24 часа пройдет, цикл бы повторился, заменяя старые данные новыми.
Очень буду надеяться на вашу помощь!
Вложения
Тип файла: rar данные.rar (6.2 Кб, 17 просмотров)
sirius24 вне форума Ответить с цитированием
Старый 01.04.2010, 12:50   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно так:
Код:
Sub Main()
    DoEvents
    With Sheets(1)
        .Range(.[A1], .Cells(Rows.Count, 1).End(xlUp)).Copy Sheets(2).Cells(1, Hour(Now))
    End With
    Application.OnTime Now + TimeValue("01:00:00"), "Main"
End Sub
При первом запуске макроса, данные будут записаны в столбец листа 2, номер которого соответствует текущему часу. Затем, каждый час эта процедура будет повторяться.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 01.04.2010, 13:18   #3
sirius24
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 10
По умолчанию

А если в исходных данных формула? Можно, чтобы макрос значения копировал, а не формулу?
sirius24 вне форума Ответить с цитированием
Старый 01.04.2010, 13:24   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно так:
Код:
Sub Main()
    DoEvents
    With Sheets(1)
        .Range(.[A1], .Cells(Rows.Count, 1).End(xlUp)).Copy
        Sheets(2).Cells(1, Hour(Now)).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End With
    Application.OnTime Now + TimeValue("01:00:00"), "Main"
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 01.04.2010, 13:27   #5
sirius24
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 10
По умолчанию

Спасибо огромное, работает!
sirius24 вне форума Ответить с цитированием
Старый 06.04.2010, 08:25   #6
sirius24
Пользователь
 
Регистрация: 17.03.2010
Сообщений: 10
По умолчанию

SAS888, а подскажите как исправить ситуацию:
в 00:00 макрос не может скопировать данные, т.к. нулевого столбца нет.
sirius24 вне форума Ответить с цитированием
Старый 06.04.2010, 09:17   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно при 00:00 часов копировать в 24-й столбец. Например, так:
Код:
Sub Main()
    Dim i As Integer: DoEvents
    With Sheets(1)
        i = IIf(Hour(Now) = 0, 24, Hour(Now))
        .Range(.[A1], .Cells(Rows.Count, 1).End(xlUp)).Copy
        Sheets(2).Cells(1, i).PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End With
    Application.OnTime Now + TimeValue("01:00:00"), "Main"
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отбор данных по условию и копирование на новый лист Эдик12 Microsoft Office Excel 4 03.03.2010 23:16
Копирование данных Alex___ Microsoft Office Excel 3 16.10.2009 14:34
Отправка данных из Delphi в Excel по условию GhostBZ БД в Delphi 4 28.08.2009 10:41
Копирование данных maks_ Microsoft Office Excel 4 09.01.2009 11:01
? Помогите с переносом данных по условию Ural-666 Microsoft Office Excel 3 29.11.2007 22:54