Страницы: 1 2 След.
RSS
Экспорт данных из Quik
 
Добрый день коллеги!  
Очень нужна Ваша помощь.  
Суть вот в чем.  
Мне необходимо реализовать нарастающий итог по каждой из указанных ячеек (A12:A21 и С2:C11, итоговая сумма отображается соответственно в ячейках G12:G21 и H2:H11)при экспорте данных из торговой платформы Квик. Эту проблему я решил, но как оказалось не полностью. При вводе данных в ячейки A12:A21 и С2:C11 в ручную, итоговая сумма отображается, как положено в ячейках G12:G21 и H2:H11, но при подключении к платформе Квик данные по ячейкам G12:G21 и H2:H11 не обновляются.  
Большая просьба помочь мне в решении этой проблемы. Файл Excel прикладываю.  
Заранее всем огромное СПАСИБО!
---------------------      
 
Вместо Worksheet_Change надо Worksheet_Calculate() использовать.
 
Заменил Worksheet_Change на Worksheet_Calculate() и ничего не изменилось;((
---------------------      
 
Так у Вас там Target используется, а в Worksheet_Calculate() таргетов нет :) Там подумать надо... код переписать иначе наверное придётся. И ещё, я точно не знаю, если нет ни одной формулы на листе, может Calculate не случится. Тогда может надо Volatile использовать.
 
Блин, засада, сам я не прогер;(((
---------------------      
 
{quote}{login=Hugo}{date=07.06.2010 12:46}{thema=}{post}Так у Вас там Target используется, а в Worksheet_Calculate() таргетов нет :) Там подумать надо... код переписать иначе наверное придётся. И ещё, я точно не знаю, если нет ни одной формулы на листе, может Calculate не случится. Тогда может надо Volatile использовать.{/post}{/quote}  
---------------------  
Пишем обычную обработку действий.  
Ставим на Worksheet_Calculate().  
Если нужна постоянная паника и пересчет при любом "чихе" в любую свободную ячейку на листе ДВССЫЛ(), СЕГОДНЯ() или на выбор еще 5 функций.  
Если запуск при получении данных - ставим СЧЁТ() для числовых значений, СЧЁТЗ() для текстовых, или просто на ОнТайм с заданным интервалом.  
Как то так, Игорь67
 
Данные идут потоково с ежесекундным обновлением.  
Эти функции (СЧЕТ, СЧЕТЗ) знакомы но непонятно зачем их в данном случае использовать?
---------------------      
 
Событие листа  Worksheet_Calculate() возникает при пересчете формулы.    
СЧЕТ, СЧЕТЗ при появлении новых данных в диапазоне формула пересчитывается и тем самым вызывает событие Worksheet_Calculate.    
Вы просто ради эксперемента - вставьте MsgBox в Ваш код и попробуйте нажать F9, (при условии что у Вас нет других формул или условного форматирования). То макрос не запустится. А если через копи/паст вставить значение - получите сообщение:)
 
Нифига блин, не выходит.  
Если не сложно подскажите плиз в    
какой строчке, что поменять. Я в  
VBA совсем плох, только самые общие черты.  
Если подскажите будет очень здорово!  
Спос заранее!
---------------------      
 
А задачка не такая простая...  
Если вводить в ячейку число, которое там уже было, то существующий код срабатывает (так оно и надо, вероятно), но события пересчёта листа не наступает...
 
Смысл самой задачи вот в чем, если это поможет.  
В Таблицу Excel (Покупка | Продажа | Цена) потоково поступают данные по объемам.  
Согласно полученных данных я строю диаграмму относительно цены. Но так как данные объемов на покупку и продажу постоянно меняются, я хочу создать таблицу, в которой эти данные будут суммироваться и выводится на отдельную диаграмму.
---------------------      
 
Не помогает СУММ
 
Хотя... если данные гарантированно поступают по всем ячейкам (т.е. можно смело суммировать все пары за каждый цикл), то можно завязать код на ячйку суммы всех, и т.к. она 100% изменится и посчитается, то тупо по этому событию суммировать каждую пару. Но только надо посмотреть, сколько Calculate произойдёт за цикл, может надо будет учитывать каждый 20-й пересчёт?  
Я вначале пытался поймать ячейку индивидуально - там получалось, что если пришли данные такие-же как уже были, то пересчёт не происходит, но Worksheet_Change срабатывает.
 
{quote}{login=The_Prist}{date=07.06.2010 03:23}{thema=}{post}Всегда срабатывало, даже при экспорте DDE. Автопересчет-то включен?{/post}{/quote}  
 
Private Sub Worksheet_Calculate()  
MsgBox 1  
End Sub  
 
не срабатывает, если в зависимую ячейку вбить то, что там уже есть.
 
А если обмануть?  
Private Sub Worksheet_Change(ByVal Target As Range)  
Dim x  
x = Target  
Application.EnableEvents = False  
Target = Target + 1  
Target = x  
Application.EnableEvents = True  
End Sub
 
Воткнул СУММ, таблица итоговых значений стала обновляться, но не нарастающим итогом, а дублировать теже значения, что и в базовой таблице. Что делать?    
Используется для расчета событие Worksheet_Change.
---------------------      
 
{quote}{login=The_Prist}{date=07.06.2010 03:23}{thema=}{post}Всегда срабатывало, даже при экспорте DDE. Автопересчет-то включен?{/post}{/quote}  
 
Просветите темного, что такое автопересчет?
---------------------      
 
{quote}{login=Hugo}{date=07.06.2010 03:24}{thema=}{post}Хотя....{/post}{/quote}  
 
А Вы тоже к Квик подключаетесь?
---------------------      
 
{quote}{login=The_Prist}{date=07.06.2010 04:38}{thema=Re: Re: }{post}{quote}{login=Fox_RM}{date=07.06.2010 04:34}{thema=Re: }{post}Просветите темного, что такое автопересчет?{/post}{/quote}Это автоматическое вычисление формул при изменениях на листе.  
Для 2003:  
Сервис-Параметры-Вычисления-Автоматически  
Для 2007:  
Меню-Параметры Excel-Формулы-Вычисления в книге-Автоматически{/post}{/quote}  
 
2003 включено.
---------------------      
 
Fox_RM, а мой "обходной манёвр" не подходит?
 
{quote}{login=Юрий М}{date=07.06.2010 04:41}{thema=}{post}Fox_RM, а мой "обходной манёвр" не подходит?{/post}{/quote}  
 
Нужно копи-паст кода сделать?  
Просто если адаптировать его, то я скорее всего не смогу;(
---------------------      
 
{quote}{login=Fox_RM}{date=07.06.2010 04:36}{thema=Re: }{post}{quote}{login=Hugo}{date=07.06.2010 03:24}{thema=}{post}Хотя....{/post}{/quote}  
 
А Вы тоже к Квик подключаетесь?{/post}{/quote}  
 
Первый раз слышу. Это что-то банковское?
 
{quote}{login=Fox_RM}{date=07.06.2010 04:50}{thema=Re: }{post}{quote}{login=Юрий М}{date=07.06.2010 04:41}{thema=}{post}Fox_RM, а мой "обходной манёвр" не подходит?{/post}{/quote}  
 
Нужно копи-паст кода сделать?  
Просто если адаптировать его, то я скорее всего не смогу;({/post}{/quote}  
 
В таком виде как Вы написали не срабатывает.
---------------------      
 
{quote}{login=Hugo}{date=07.06.2010 04:51}{thema=Re: Re: }{post}{quote}{login=Fox_RM}{date=07.06.2010 04:36}{thema=Re: }{post}{quote}{login=Hugo}{date=07.06.2010 03:24}{thema=}{post}Хотя....{/post}{/quote}  
 
А Вы тоже к Квик подключаетесь?{/post}{/quote}  
 
Первый раз слышу. Это что-то банковское?{/post}{/quote}  
 
Торговая платформа для получения котировок с биржи РТС.
 
Попробуй так:  
Private Sub Worksheet_Change(ByVal Target As Range)  
Dim x  
   If Not Intersect(Target, Range("C2:C21")) Is Nothing Then  
       x = Target  
       Application.EnableEvents = False  
       Target = Target + 1  
       Target = x  
       Target.Offset(0, 4) = Target.Offset(0, 4) + Target  
       Application.EnableEvents = True  
   End If  
End Sub  
Только закомментируйте все Ваши строки в коде.
 
{quote}{login=Юрий М}{date=07.06.2010 05:09}{thema=}{post}Попробуй так:  
...{/post}{/quote}  
 
Неа. Вот файл. Может, что не так делаю?
---------------------      
 
А что "Неа"?
 
{quote}{login=Юрий М}{date=07.06.2010 05:25}{thema=}{post}А что "Неа"?{/post}{/quote}  
 
Не пашет;((
---------------------      
 
Жалко, что нет Лузера (тм). Что "не пашет"? Можете толком сказать? Данные в столбец С поступают, а в столбце G ничего не происходит?
 
{quote}{login=Юрий М}{date=07.06.2010 05:29}{thema=}{post}Жалко, что нет Лузера (тм). Что "не пашет"? Можете толком сказать? Данные в столбец С поступают, а в столбце G ничего не происходит?{/post}{/quote}  
 
Вопрос понятен, отвечаю)  
Когда стоит событие Worksheet_Change данные из Квика поступают в основную таблицу (столбцы А12:А21 и С2:11), переставляю на Calculate данные не поступают. Когда добавлял СУММ на ячейки Н2:11 и G12:21 со ссылкой на ячейки основной таблицы данные дублировались и на них. Когда компилировал Ваши коды как Вы правильно сказали данные поступали только в ячейки основной таблицы.
---------------------      
Страницы: 1 2 След.
Читают тему
Наверх