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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2010, 20:44   #1
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию Заполнение таблицы по условию

Здравствуйте. Мне необходимо иногда каждый час переписывать данные из проги по сбору информации в сводную таблицу. Порядком надоедает. В этой проге нет возможности как то копировать все данные или сделать импорт. Оставили одну только возможность копировать только по одому параметру.
Ну вот. Я с помощью скрипта копирую все нужные мне параметры в Эксель.
Помогите сделать макрос для переноса этих данных в соответствующее времени место. Допустим если время 12-00 (или чуть более), то при запуске макроса из листа1 копировались на лист2 на отметку 12 часов.
И еще одна проблемка. В этой проге десятичные разделены точкой, а для расчета мне нужна запятая. Я попробовал создать макрос по замене точки на запятую, но он почемуто только удаляет точки.
Файл примера прилагается.
Вложения
Тип файла: rar сводная таб.rar (10.5 Кб, 16 просмотров)
hamlook вне форума Ответить с цитированием
Старый 04.01.2010, 21:55   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Немного упростил Ваш код

Код:

 Public Sub NextTime()

    Application.OnTime Now + TimeSerial(0, 0, 1), "NextTime"
    
    DoEvents
    
  Dim чуть_чуть, hr As Integer
   
чуть_чуть = 10 ' интервал в секундах
   
      If Minute(Now) Mod 60 = 0 And Second(Now) >= 0 And Second(Now) < чуть_чуть Then
  hr = Hour(Now)
   If hr = 0 Then hr = 24
   Sheets("Лист2").Cells(hr + 4, 4) = Replace(Sheets("Лист1").Range("B2").Text, ".", ",")
    Sheets("Лист2").Cells(hr + 4, 5) = Replace(Sheets("Лист1").Range("B3").Text, ".", ",")
   
   
      End If
           
    
End Sub




Private Sub Workbook_Open()
Call NextTime
End Sub


Если таймер не нужен,а запуск вручную,тогда
Код:



 Sub Чуть_Чуть()

        
  Dim  hr As Integer

  hr = Hour(Now)
   If hr = 0 Then hr = 24
   Sheets("Лист2").Cells(hr + 4, 4) = Replace(Sheets("Лист1").Range("B2").Text, ".", ",")
    Sheets("Лист2").Cells(hr + 4, 5) = Replace(Sheets("Лист1").Range("B3").Text, ".", ",")
   
        
    
End Sub
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 04.01.2010 в 22:02.
doober вне форума Ответить с цитированием
Старый 04.01.2010, 23:06   #3
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте hamlook.
Предложение doober прекрасно подходит для решения Вашей задачи, но я позволил себе несколько "причесать" его изменив время таймера (не зачем ежесекундно запускать процедуру) и место размещения кода таймера (в таком виде он может быть размещен в модуле книги)
Код:
Public Sub NextTime()
Dim hr%, v1, v2
    DoEvents
    v1 = Replace(Sheets(1).[B2], ".", ",")
    v2 = Replace(Sheets(1).[B3], ".", ",")
    hr = IIf(Hour(Now) = 0, 24, Hour(Now))
    With Sheets(2)
        .Cells(hr + 4, 4) = CDbl(v1)
        .Cells(hr + 4, 5) = CDbl(v2)
    End With
    Application.OnTime Now + TimeSerial(1, 0, 0), "ЭтаКнига.NextTime"
End Sub
Private Sub Workbook_Open()
    NextTime
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 04.01.2010, 23:13   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
Смех

Сказано было чуть чуть,я и принял чуть чуть за секунды
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 05.01.2010, 09:23   #5
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Огромнейшее спасибо! Работает как нужно. Буду пробовать разобратся и настроить под свою задачу.
На Лист1 у меня до 50 значений которые заполняют три таблицы.
Teslenko_EA на твой код можно кнопку настроить? Или на лист переносить надо?
И еще вопросик. Мне некоторые значения при переносе нужно менять + на -, и наоборот. Подскажите как это сделать.
hamlook вне форума Ответить с цитированием
Старый 05.01.2010, 11:55   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код Евгения работает от момента открытия книги каждый час автоматом,если хотите на кнопку,то вешайте на кнопку

Процедуру Чуть_Чуть()


функция по смене знака

Код:
  Function Смена_Знака (Значение As Double, смена As Boolean) As Double

    Select Case смена
 
        Case True
   Смена_Знака= -Значение
        Case False
  Смена_Знака= Значение
    
End Select

End Function
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 05.01.2010, 12:39   #7
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Спасибо. Пока мне нужна кнопка, потом когда скрипт получится автоматизировать, буду пользоваться кодом Teslenko_EA.
hamlook вне форума Ответить с цитированием
Старый 05.01.2010, 17:00   #8
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Сергей, автор мог и не заметить, но Вы то знаете, что - "Код Евгения..." на самом деле "Предложение doober" я только "позволил себе несколько причесать его"
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 07.01.2010, 07:02   #9
hamlook
Пользователь
 
Регистрация: 22.05.2009
Сообщений: 85
По умолчанию

Проблемма с точками-запятыми осталась.
Меняет если число начинается с нуля, а если с другой цифры то удаляет точку, а запятую не ставит.
И те числа которые с нуля - сохраняет как текст, и они в дальнейших вычислениях не учавствуют.
Вложения
Тип файла: rar сводная таб.rar (11.2 Кб, 9 просмотров)
hamlook вне форума Ответить с цитированием
Старый 07.01.2010, 11:12   #10
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте hamlook.
избавит от "Пробдеммы" корректировка кода.
Евгений.
P.S. "Teslenko_EA на твой код..." свои посты я подписываю "Евгений" в надежде, что ко мне будут обращаться по имени.
Вложения
Тип файла: rar сводная таб2.rar (10.3 Кб, 23 просмотров)
Teslenko_EA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение таблицы по условию! KNatalia Microsoft Office Excel 0 27.10.2009 14:09
Заполнение комбобокса по условию. lexx19 Microsoft Office Excel 2 08.10.2009 12:40
Заполнение таблицы по условию ABCOz Microsoft Office Excel 7 10.09.2009 12:29
Сумма значений таблицы условию. Drummer_SV Microsoft Office Excel 4 13.05.2009 16:24
заполнение таблицы Andreyka Общие вопросы Delphi 6 07.02.2009 22:18