Option Explicit Sub ferdi() Dim i As Long, j As Long Dim sdelka As String, kol As Double, summ As Double Dim sdelka2 As String, kol2 As Double, summ2 As Double
j = 1: i = 3 Do While Cells(i, 2) <> "" If kol = 0 Then sdelka = Cells(i, 2) If sdelka = Cells(i, 2) Then Do While Cells(i, 2) = sdelka kol = kol + Cells(i, 4) summ = summ + Cells(i, 4) * Cells(i, 3) i = i + 1 Loop End If
kol2 = 0: summ2 = 0 sdelka2 = Cells(i, 2) Do While Cells(i, 2) = sdelka2 kol2 = kol2 + Cells(i, 4) summ2 = summ2 + Cells(i, 4) * Cells(i, 3) i = i + 1 Loop
Изменил значение в ячейке D6 и макрос тут же выдал ошибку run-time error '1004' и выделил строку
Code
Do While Cells(i, 2) = sdelka2
Я в макросах дуб-дубом, так что ищите причину сами
Quote (MCH)
олько нашел время для решения задачи
Code
Option Explicit Sub ferdi() Dim i As Long, j As Long Dim sdelka As String, kol As Double, summ As Double Dim sdelka2 As String, kol2 As Double, summ2 As Double
j = 1: i = 3 Do While Cells(i, 2) <> "" If kol = 0 Then sdelka = Cells(i, 2) If sdelka = Cells(i, 2) Then Do While Cells(i, 2) = sdelka kol = kol + Cells(i, 4) summ = summ + Cells(i, 4) * Cells(i, 3) i = i + 1 Loop End If
kol2 = 0: summ2 = 0 sdelka2 = Cells(i, 2) Do While Cells(i, 2) = sdelka2 kol2 = kol2 + Cells(i, 4) summ2 = summ2 + Cells(i, 4) * Cells(i, 3) i = i + 1 Loop
Изменил значение в ячейке D6 и макрос тут же выдал ошибку run-time error '1004' и выделил строку
Code
Do While Cells(i, 2) = sdelka2
Я в макросах дуб-дубом, так что ищите причину сами light26
Только нашел время для решения задачи, а она уже решена и тема закрыта
Зашёл в эту тему случайно, и вот тебе сюрприз. Окольные пути разрушу - и использую этот вариант - ваш труд не зря. Огромное спасибо MCH, ВЫ ЛУЧШИЙ
Quote (MCH)
Только нашел время для решения задачи, а она уже решена и тема закрыта
Зашёл в эту тему случайно, и вот тебе сюрприз. Окольные пути разрушу - и использую этот вариант - ваш труд не зря. Огромное спасибо MCH, ВЫ ЛУЧШИЙ ferdi
Спасибо, Для полного счастья подскажите плиз 2 ньюанса
1) как это автоматизировать - без кнопки. Проблема в том, что данные вводятся не руками, а автоматом из сторонней программы(используя DDE). И
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect([B1:D300], Target) Is Nothing Then Exit Sub 'код End Sub
не работает.
На данном ресурсе поиск на этот вопрос не дал результатов
2) Можно поменять код так, чтобы цена закрытия предыдущей сделки не влияла на цену открытия следующей,если это сделки разнонаправленные?(В вашем варианте - общий итог верен, но для статистики нужна правильная цена входа Купля 100 2 Продажа 120 2 Продажа 90 2 Купля 180 2
а хотелось бы 1 Купля 2 100 120 40 2 Продажа 2 90 180 -180
Сам не могу, пробовал. Видимо программирование не сильная моя сторона
Спасибо, Для полного счастья подскажите плиз 2 ньюанса
1) как это автоматизировать - без кнопки. Проблема в том, что данные вводятся не руками, а автоматом из сторонней программы(используя DDE). И
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect([B1:D300], Target) Is Nothing Then Exit Sub 'код End Sub
не работает.
На данном ресурсе поиск на этот вопрос не дал результатов
2) Можно поменять код так, чтобы цена закрытия предыдущей сделки не влияла на цену открытия следующей,если это сделки разнонаправленные?(В вашем варианте - общий итог верен, но для статистики нужна правильная цена входа Купля 100 2 Продажа 120 2 Продажа 90 2 Купля 180 2
В таких случаях обычно советуют Worksheet_Calculate.
Можно поподробней? Внешняя программа изменяет значение ячеек B30:D300. И как можно отследить изменение. Попробовал просто вписать код внутрь Worksheet_Calculate, но при обновлении данных никакого события не происходит.
Может не там копаю, и Worksheet_Calculate ни при чём? Ведь ничего на листе не вычисляется, а тупо копируются значения из сторонней программы в Ехсеl
Quote (KuklP)
В таких случаях обычно советуют Worksheet_Calculate.
Можно поподробней? Внешняя программа изменяет значение ячеек B30:D300. И как можно отследить изменение. Попробовал просто вписать код внутрь Worksheet_Calculate, но при обновлении данных никакого события не происходит.
Может не там копаю, и Worksheet_Calculate ни при чём? Ведь ничего на листе не вычисляется, а тупо копируются значения из сторонней программы в Ехсеlferdi
Сообщение отредактировал ferdi - Четверг, 12.01.2012, 01:25
Здравствуйте, уважаемые участники! Пытаюсь решить такую вот задачку (тоже как бы трейдерская ), пока не получается, т.к. гуманитарий до мозга костей , мобыть поможете чем-нить ? :
Есть таблица (во вложении) с историческими данными по ОДНОМУ инструменту, которые нужно отфильтровать следующим образом - значение Open сегодняшнего дня меньше/больше Close вчерашнего дня на N%
В идеале же - нужно настроить (наверное придётся создавать другую ?) табличку таким образом, чтобы она могла сканить (по DDE например) каждый день МНОЖЕСТВО инструментов. Не знаю - КАК можно это организовать, но сам механизм видится таким: табличка проверяет входящие данные с нескольких (десятков/сотен) инструментов по вышеуказанному фильтру (открытие сегодняшнего дня меньше/больше закрытия вчерашнего дня на N%), и формирует список этих инструментов в табличку: первый столбец - имя инструмента , второй столбец (Gap) - значение разрыва между Open сегодняшнего дня и Close вчерашнего дня в процентах (которое может фильтроваться пользователем, редактирующим значение N).
Вот как-то так
Буду рад хотя бы ссылке на полезную инфу. На всякий случай - большое человеческое спасибо.
Здравствуйте, уважаемые участники! Пытаюсь решить такую вот задачку (тоже как бы трейдерская ), пока не получается, т.к. гуманитарий до мозга костей , мобыть поможете чем-нить ? :
Есть таблица (во вложении) с историческими данными по ОДНОМУ инструменту, которые нужно отфильтровать следующим образом - значение Open сегодняшнего дня меньше/больше Close вчерашнего дня на N%
В идеале же - нужно настроить (наверное придётся создавать другую ?) табличку таким образом, чтобы она могла сканить (по DDE например) каждый день МНОЖЕСТВО инструментов. Не знаю - КАК можно это организовать, но сам механизм видится таким: табличка проверяет входящие данные с нескольких (десятков/сотен) инструментов по вышеуказанному фильтру (открытие сегодняшнего дня меньше/больше закрытия вчерашнего дня на N%), и формирует список этих инструментов в табличку: первый столбец - имя инструмента , второй столбец (Gap) - значение разрыва между Open сегодняшнего дня и Close вчерашнего дня в процентах (которое может фильтроваться пользователем, редактирующим значение N).
Вот как-то так
Буду рад хотя бы ссылке на полезную инфу. На всякий случай - большое человеческое спасибо.Неофит
Попробовал в автофильтре поставить на столбец Open условие "меньше" (R[-1]C[3)*1,003 Потом попробовал "меньше" (R[-1]C[3)*0,3% - нифига не получилось, наверное где-то туплю
Попробовал в автофильтре поставить на столбец Open условие "меньше" (R[-1]C[3)*1,003 Потом попробовал "меньше" (R[-1]C[3)*0,3% - нифига не получилось, наверное где-то туплю Неофит
Сообщение отредактировал Неофит - Пятница, 17.02.2012, 09:28
Неофит, у Вас в файле числа записаны как текст! Попробуйте заменить точки на запятые! Из сообщений и файла совершенно не понятно, что же Вам все таки нужно!
Неофит, у Вас в файле числа записаны как текст! Попробуйте заменить точки на запятые! Из сообщений и файла совершенно не понятно, что же Вам все таки нужно!Jhonson