Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сохранение изменяющихся данных в отдельную таблицу - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранение изменяющихся данных в отдельную таблицу (Формулы/Formulas)
Сохранение изменяющихся данных в отдельную таблицу
pandatyt Дата: Понедельник, 19.05.2014, 22:46 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Вопрос в следующем. В одной конкретной ячейке постоянно изменяются данные(числа), допустим раз в минуту. Соответственно необходимо раз в минуту эти данные записывать в таблицу таким образом, чтобы можно было наблюдать зависимость изменения чисел от времени( каждую минуту появляется новое число). другими словами, каждую минуту необходимо из одной ячейки переносить данные в таблицу, данные должны следовать друг за другом, что позволит видеть их зависимость от времени. Каким образом это можно сделать? Предпочтительно получить полную автоматизацию процесса
 
Ответить
СообщениеВопрос в следующем. В одной конкретной ячейке постоянно изменяются данные(числа), допустим раз в минуту. Соответственно необходимо раз в минуту эти данные записывать в таблицу таким образом, чтобы можно было наблюдать зависимость изменения чисел от времени( каждую минуту появляется новое число). другими словами, каждую минуту необходимо из одной ячейки переносить данные в таблицу, данные должны следовать друг за другом, что позволит видеть их зависимость от времени. Каким образом это можно сделать? Предпочтительно получить полную автоматизацию процесса

Автор - pandatyt
Дата добавления - 19.05.2014 в 22:46
krosav4ig Дата: Вторник, 20.05.2014, 01:00 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
ИМХО, вопрос по части vba. worksheet_change вам в помощь.
вот примерный код если ячейка для ввода A1 и диапазон для накапливания значений и времени B:C


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 20.05.2014, 11:34
 
Ответить
СообщениеИМХО, вопрос по части vba. worksheet_change вам в помощь.
вот примерный код если ячейка для ввода A1 и диапазон для накапливания значений и времени B:C

Автор - krosav4ig
Дата добавления - 20.05.2014 в 01:00
pandatyt Дата: Вторник, 20.05.2014, 20:16 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
попробовал применить, ничего не получилось. подскажите, в чем может быть проблема?
 
Ответить
Сообщениепопробовал применить, ничего не получилось. подскажите, в чем может быть проблема?

Автор - pandatyt
Дата добавления - 20.05.2014 в 20:16
pandatyt Дата: Вторник, 20.05.2014, 20:48 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
все заработало. но при копировании эксель подвисает на несколько секунд, потом отвисает. в чем может быть проблема?
могли бы вы переделать код так, чтобы копирование происходило в том же стиле при совпадении двух ячеек, одна из которых меняется, а вторая нет, при этом вывод даты во второй стобец не происходил?
заранее спасибо за великодушную помощь!
 
Ответить
Сообщениевсе заработало. но при копировании эксель подвисает на несколько секунд, потом отвисает. в чем может быть проблема?
могли бы вы переделать код так, чтобы копирование происходило в том же стиле при совпадении двух ячеек, одна из которых меняется, а вторая нет, при этом вывод даты во второй стобец не происходил?
заранее спасибо за великодушную помощь!

Автор - pandatyt
Дата добавления - 20.05.2014 в 20:48
krosav4ig Дата: Вторник, 20.05.2014, 21:04 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
попробуйте перед строкой [vba]
Код
Target.Copy [B:C].Cells(n, 1)
[/vba] добавить строку [vba]
Код
Application.ScreenUpdating = 0
[/vba]
если сравнивать с B1 то код вот такой

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     Dim n As Integer
     n = Application.CountA([C:C]) + 1
     If Not Intersect(Target, [A1]) Is Nothing And _
       Not (IsEmpty(Target)) And Target = [B1] Then
         Target.Copy [C:C].Cells(n, 1)
     End If
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 20.05.2014, 21:07
 
Ответить
Сообщениепопробуйте перед строкой [vba]
Код
Target.Copy [B:C].Cells(n, 1)
[/vba] добавить строку [vba]
Код
Application.ScreenUpdating = 0
[/vba]
если сравнивать с B1 то код вот такой

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     Dim n As Integer
     n = Application.CountA([C:C]) + 1
     If Not Intersect(Target, [A1]) Is Nothing And _
       Not (IsEmpty(Target)) And Target = [B1] Then
         Target.Copy [C:C].Cells(n, 1)
     End If
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 20.05.2014 в 21:04
pandatyt Дата: Вторник, 20.05.2014, 21:09 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
работает! но эксель все равно подвисает после записи значения в ячейку. даже на новом листе с одним макросом подвисает
 
Ответить
Сообщениеработает! но эксель все равно подвисает после записи значения в ячейку. даже на новом листе с одним макросом подвисает

Автор - pandatyt
Дата добавления - 20.05.2014 в 21:09
pandatyt Дата: Вторник, 20.05.2014, 21:33 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Application.ScreenUpdating = 0

это не помогает. поможете устранить проблему? это значимый момент с подвисанием.


Сообщение отредактировал pandatyt - Вторник, 20.05.2014, 21:33
 
Ответить
СообщениеApplication.ScreenUpdating = 0

это не помогает. поможете устранить проблему? это значимый момент с подвисанием.

Автор - pandatyt
Дата добавления - 20.05.2014 в 21:33
pandatyt Дата: Вторник, 20.05.2014, 22:10 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
не поленился, создал пример с подробным описанием задачи. не проходите мимо! задача не самая скучная в решении)
К сообщению приложен файл: 8815937.xls (38.0 Kb)
 
Ответить
Сообщениене поленился, создал пример с подробным описанием задачи. не проходите мимо! задача не самая скучная в решении)

Автор - pandatyt
Дата добавления - 20.05.2014 в 22:10
Pelena Дата: Вторник, 20.05.2014, 22:53 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19187
Репутация: 4421 ±
Замечаний: ±

Excel 365 & Mac Excel
pandatyt, перенести тему в раздел ВОПРОСЫ ПО VBA?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеpandatyt, перенести тему в раздел ВОПРОСЫ ПО VBA?

Автор - Pelena
Дата добавления - 20.05.2014 в 22:53
pandatyt Дата: Вторник, 20.05.2014, 23:14 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Pelena, идея хорошая. буду благодарен
 
Ответить
СообщениеPelena, идея хорошая. буду благодарен

Автор - pandatyt
Дата добавления - 20.05.2014 в 23:14
Alex_ST Дата: Среда, 21.05.2014, 13:17 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
pandatyt,
с Вашим файлом и хотелками разбираться, извините, лень, т.к. в таком виде это нужно только Вам.
А общий принцип можно применить, например, такой:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False: Application.EnableEvents = False
    Dim lLastrow&: lLastrow = Me.Cells(Rows.Count, 2).End(xlUp).Row
    If Not Intersect(Target, [A1]) Is Nothing Then
       Target.Copy Me.Cells(lLastrow + 1, "B"): Me.Cells(lLastrow + 1, "C") = Now
    End If
    Application.ScreenUpdating = True: Application.EnableEvents = True
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщениеpandatyt,
с Вашим файлом и хотелками разбираться, извините, лень, т.к. в таком виде это нужно только Вам.
А общий принцип можно применить, например, такой:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False: Application.EnableEvents = False
    Dim lLastrow&: lLastrow = Me.Cells(Rows.Count, 2).End(xlUp).Row
    If Not Intersect(Target, [A1]) Is Nothing Then
       Target.Copy Me.Cells(lLastrow + 1, "B"): Me.Cells(lLastrow + 1, "C") = Now
    End If
    Application.ScreenUpdating = True: Application.EnableEvents = True
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 21.05.2014 в 13:17
pandatyt Дата: Среда, 21.05.2014, 19:16 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
метод не пробовал еще, приду с работы, испытаю. на самом деле проблема не такая уж и лично моя "хотелочная". есть определенная категория задач, решить которые было бы очень удобно при помощи показанной в файле схемы. тем более ограничения ставятся не мной. в то самое желтое окно идет загрузка данных из другой программы. ексель нужен чтобы анализировать входящие данные. но чтобы их начать анализировать, нужно сначала сохранить. в любом случае спасибо за помощь, добрый человек/люди
 
Ответить
Сообщениеметод не пробовал еще, приду с работы, испытаю. на самом деле проблема не такая уж и лично моя "хотелочная". есть определенная категория задач, решить которые было бы очень удобно при помощи показанной в файле схемы. тем более ограничения ставятся не мной. в то самое желтое окно идет загрузка данных из другой программы. ексель нужен чтобы анализировать входящие данные. но чтобы их начать анализировать, нужно сначала сохранить. в любом случае спасибо за помощь, добрый человек/люди

Автор - pandatyt
Дата добавления - 21.05.2014 в 19:16
pandatyt Дата: Среда, 21.05.2014, 21:51 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
попробовал. последний пример шикарный. все работает, не тормозит. еще раз благодарю!
 
Ответить
Сообщениепопробовал. последний пример шикарный. все работает, не тормозит. еще раз благодарю!

Автор - pandatyt
Дата добавления - 21.05.2014 в 21:51
nilem Дата: Среда, 21.05.2014, 22:03 | Сообщение № 14
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
если конкретно для примера, то можно попробовать как-нибудь так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "C6" Then Exit Sub
If Target.Count > 1 Then Exit Sub
Cells(Minute(Cells(6, 8)) + 5, Hour(Cells(6, 8)) * 3 - 48) = Target
End Sub
[/vba]
вполне вероятно, что нужно будет использовать не Change событие, а Calculate

Edited:
пока писал ответ, оказалось, что уже все решено :)


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Среда, 21.05.2014, 22:05
 
Ответить
Сообщениеесли конкретно для примера, то можно попробовать как-нибудь так:
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "C6" Then Exit Sub
If Target.Count > 1 Then Exit Sub
Cells(Minute(Cells(6, 8)) + 5, Hour(Cells(6, 8)) * 3 - 48) = Target
End Sub
[/vba]
вполне вероятно, что нужно будет использовать не Change событие, а Calculate

Edited:
пока писал ответ, оказалось, что уже все решено :)

Автор - nilem
Дата добавления - 21.05.2014 в 22:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сохранение изменяющихся данных в отдельную таблицу (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!