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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматическое заполнение сделок в эксел - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Модератор форума: китин, _Boroda_  
Автоматическое заполнение сделок в эксел
MCH Дата: Вторник, 27.12.2011, 08:37 | Сообщение № 21
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Quote (ferdi)
Тема закрыта. Окольными путями задача решена

Только нашел время для решения задачи, а она уже решена и тема закрыта
К сообщению приложен файл: ferdi.xls (45.0 Kb)
 
Ответить
Сообщение
Quote (ferdi)
Тема закрыта. Окольными путями задача решена

Только нашел время для решения задачи, а она уже решена и тема закрыта

Автор - MCH
Дата добавления - 27.12.2011 в 08:37
light26 Дата: Вторник, 27.12.2011, 08:52 | Сообщение № 22
Группа: Друзья
Ранг: Старожил
Сообщений: 1351
Репутация: 91 ±
Замечаний: 0% ±

2007, 2010, 2013
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


Я в макросах дуб-дубом, так что ищите причину сами smile


Я не волшебник. Я только учусь
 
Ответить
Сообщение
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


Я в макросах дуб-дубом, так что ищите причину сами smile

Автор - light26
Дата добавления - 27.12.2011 в 08:52
MCH Дата: Вторник, 27.12.2011, 09:18 | Сообщение № 23
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

где то значит накосячил
 
Ответить
Сообщениегде то значит накосячил

Автор - MCH
Дата добавления - 27.12.2011 в 09:18
ferdi Дата: Понедельник, 09.01.2012, 00:35 | Сообщение № 24
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Quote (MCH)
Только нашел время для решения задачи, а она уже решена и тема закрыта


Зашёл в эту тему случайно, и вот тебе сюрприз. Окольные пути разрушу - и использую этот вариант - ваш труд не зря. Огромное спасибо MCH, ВЫ ЛУЧШИЙ smile
 
Ответить
Сообщение
Quote (MCH)
Только нашел время для решения задачи, а она уже решена и тема закрыта


Зашёл в эту тему случайно, и вот тебе сюрприз. Окольные пути разрушу - и использую этот вариант - ваш труд не зря. Огромное спасибо MCH, ВЫ ЛУЧШИЙ smile

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

Quote (light26)
Изменил значение в ячейке D6 и макрос тут же выдал ошибку run-time error '1004'


Проблема действительно имеет место быть sad
Пока не разобрался

Всё равно БОЛЬШОЕ СПАСИБО


Сообщение отредактировал ferdi - Понедельник, 09.01.2012, 00:51
 
Ответить
Сообщение
Quote (light26)
Изменил значение в ячейке D6 и макрос тут же выдал ошибку run-time error '1004'


Проблема действительно имеет место быть sad
Пока не разобрался

Всё равно БОЛЬШОЕ СПАСИБО

Автор - ferdi
Дата добавления - 09.01.2012 в 00:51
ferdi Дата: Вторник, 10.01.2012, 08:45 | Сообщение № 26
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Quote (ferdi)
Пока не разобрался


Увы, не могу разобраться в истоках ошибки sad sad sad
 
Ответить
Сообщение
Quote (ferdi)
Пока не разобрался


Увы, не могу разобраться в истоках ошибки sad sad sad

Автор - ferdi
Дата добавления - 10.01.2012 в 08:45
KuklP Дата: Вторник, 10.01.2012, 10:54 | Сообщение № 27
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Что нужно сделать, чтоб появилась ошибка?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЧто нужно сделать, чтоб появилась ошибка?

Автор - KuklP
Дата добавления - 10.01.2012 в 10:54
MCH Дата: Вторник, 10.01.2012, 12:50 | Сообщение № 28
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Quote (ferdi)
Увы, не могу разобраться в истоках ошибки

Всего то нужно было одну строчку добавить:
Code
If sdelka2 = "" Then Exit Do
К сообщению приложен файл: ferdi2.xls (43.5 Kb)


Сообщение отредактировал MCH - Вторник, 10.01.2012, 12:53
 
Ответить
Сообщение
Quote (ferdi)
Увы, не могу разобраться в истоках ошибки

Всего то нужно было одну строчку добавить:
Code
If sdelka2 = "" Then Exit Do

Автор - MCH
Дата добавления - 10.01.2012 в 12:50
ferdi Дата: Четверг, 12.01.2012, 00:23 | Сообщение № 29
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Спасибо, Для полного счастья подскажите плиз 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 105 10
2 Продажа 2 105 180 -150

а хотелось бы
1 Купля 2 100 120 40
2 Продажа 2 90 180 -180

Сам не могу, пробовал. Видимо программирование не сильная моя сторона dry

cry


Сообщение отредактировал ferdi - Четверг, 12.01.2012, 01:03
 
Ответить
СообщениеСпасибо, Для полного счастья подскажите плиз 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 105 10
2 Продажа 2 105 180 -150

а хотелось бы
1 Купля 2 100 120 40
2 Продажа 2 90 180 -180

Сам не могу, пробовал. Видимо программирование не сильная моя сторона dry

cry

Автор - ferdi
Дата добавления - 12.01.2012 в 00:23
KuklP Дата: Четверг, 12.01.2012, 00:46 | Сообщение № 30
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
В таких случаях обычно советуют Worksheet_Calculate.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВ таких случаях обычно советуют Worksheet_Calculate.

Автор - KuklP
Дата добавления - 12.01.2012 в 00:46
ferdi Дата: Четверг, 12.01.2012, 01:18 | Сообщение № 31
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Quote (KuklP)
В таких случаях обычно советуют Worksheet_Calculate.


Можно поподробней? Внешняя программа изменяет значение ячеек B30:D300. И как можно отследить изменение. Попробовал просто вписать код внутрь Worksheet_Calculate, но при обновлении данных никакого события не происходит.

Может не там копаю, и Worksheet_Calculate ни при чём? Ведь ничего на листе не вычисляется, а тупо копируются значения из сторонней программы в Ехсеl


Сообщение отредактировал ferdi - Четверг, 12.01.2012, 01:25
 
Ответить
Сообщение
Quote (KuklP)
В таких случаях обычно советуют Worksheet_Calculate.


Можно поподробней? Внешняя программа изменяет значение ячеек B30:D300. И как можно отследить изменение. Попробовал просто вписать код внутрь Worksheet_Calculate, но при обновлении данных никакого события не происходит.

Может не там копаю, и Worksheet_Calculate ни при чём? Ведь ничего на листе не вычисляется, а тупо копируются значения из сторонней программы в Ехсеl

Автор - ferdi
Дата добавления - 12.01.2012 в 01:18
KuklP Дата: Четверг, 12.01.2012, 01:52 | Сообщение № 32
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Вставьте куда-нить летучую формулу со ссылкой на изменяемый диапазон и calculate будет возникать при каждом изменении данных.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВставьте куда-нить летучую формулу со ссылкой на изменяемый диапазон и calculate будет возникать при каждом изменении данных.

Автор - KuklP
Дата добавления - 12.01.2012 в 01:52
MCH Дата: Четверг, 12.01.2012, 10:38 | Сообщение № 33
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

Добавил другой вариант фиксации сделок
К сообщению приложен файл: ferdi3.xls (48.5 Kb)
 
Ответить
СообщениеДобавил другой вариант фиксации сделок

Автор - MCH
Дата добавления - 12.01.2012 в 10:38
ferdi Дата: Воскресенье, 15.01.2012, 12:33 | Сообщение № 34
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Quote (KuklP)
Вставьте куда-нить летучую формулу со ссылкой на изменяемый диапазон и calculate будет возникать при каждом изменении данных


Мысль понятна, но как контролировать изменения только нужного диапазона - ведь на листе полно других формул
 
Ответить
Сообщение
Quote (KuklP)
Вставьте куда-нить летучую формулу со ссылкой на изменяемый диапазон и calculate будет возникать при каждом изменении данных


Мысль понятна, но как контролировать изменения только нужного диапазона - ведь на листе полно других формул

Автор - ferdi
Дата добавления - 15.01.2012 в 12:33
ferdi Дата: Воскресенье, 15.01.2012, 12:49 | Сообщение № 35
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Quote (MCH)
Добавил другой вариант фиксации сделок


Спасибо, что уделяете время таким бездарям, как я. Новый вариант работает правильно, за исключением данной ситуации:

Продажа 100 2
Купля 120 4
Продажа 90 1
Продажа 180 1


преобразуется в неверный результат (вместо усреднения цены закрытия одну сделку разбивает на две)

1 Продажа 2 100 120
2 Купля 1 120 90
3 Купля 1 120 180


Тогда как правильный вариант должен быть таким:

1 Продажа 2 100 120
2 Купля 2 120 135


PS: Кстати первый вариант(макрос ferdi) данную ситуацию обрабатывает правильно


Сообщение отредактировал ferdi - Воскресенье, 15.01.2012, 12:55
 
Ответить
Сообщение
Quote (MCH)
Добавил другой вариант фиксации сделок


Спасибо, что уделяете время таким бездарям, как я. Новый вариант работает правильно, за исключением данной ситуации:

Продажа 100 2
Купля 120 4
Продажа 90 1
Продажа 180 1


преобразуется в неверный результат (вместо усреднения цены закрытия одну сделку разбивает на две)

1 Продажа 2 100 120
2 Купля 1 120 90
3 Купля 1 120 180


Тогда как правильный вариант должен быть таким:

1 Продажа 2 100 120
2 Купля 2 120 135


PS: Кстати первый вариант(макрос ferdi) данную ситуацию обрабатывает правильно

Автор - ferdi
Дата добавления - 15.01.2012 в 12:49
MCH Дата: Воскресенье, 15.01.2012, 13:07 | Сообщение № 36
Группа: Админы
Ранг: Старожил
Сообщений: 2004
Репутация: 752 ±
Замечаний: ±

ferdi, Как то у Вас все сложно.

Для разяснения.
Какой должен быть результат у следующих данных?:
Продажа 100 2
Купля 120 4
Продажа 90 1
Продажа 180 2
 
Ответить
Сообщениеferdi, Как то у Вас все сложно.

Для разяснения.
Какой должен быть результат у следующих данных?:
Продажа 100 2
Купля 120 4
Продажа 90 1
Продажа 180 2

Автор - MCH
Дата добавления - 15.01.2012 в 13:07
ferdi Дата: Воскресенье, 15.01.2012, 14:27 | Сообщение № 37
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 0% ±

Результат должен быть следующим

1 Продажа 2 100 120
2 Купля 2 120 135
3 Продажа 1 180


Сообщение отредактировал ferdi - Воскресенье, 15.01.2012, 14:34
 
Ответить
СообщениеРезультат должен быть следующим

1 Продажа 2 100 120
2 Купля 2 120 135
3 Продажа 1 180

Автор - ferdi
Дата добавления - 15.01.2012 в 14:27
Неофит Дата: Четверг, 16.02.2012, 16:15 | Сообщение № 38
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте, уважаемые участники! Пытаюсь решить такую вот задачку (тоже как бы трейдерская wink ), пока не получается, т.к. гуманитарий до мозга костей sad , мобыть поможете чем-нить ? :

Есть таблица (во вложении) с историческими данными по ОДНОМУ инструменту, которые нужно отфильтровать следующим образом - значение Open сегодняшнего дня меньше/больше Close вчерашнего дня на N%

В идеале же - нужно настроить (наверное придётся создавать другую ?) табличку таким образом, чтобы она могла сканить (по DDE например) каждый день МНОЖЕСТВО инструментов.
Не знаю - КАК можно это организовать, но сам механизм видится таким: табличка проверяет входящие данные с нескольких (десятков/сотен) инструментов по вышеуказанному фильтру (открытие сегодняшнего дня меньше/больше закрытия вчерашнего дня на N%), и формирует список этих инструментов в табличку: первый столбец - имя инструмента , второй столбец (Gap) - значение разрыва между Open сегодняшнего дня и Close вчерашнего дня в процентах (которое может фильтроваться пользователем, редактирующим значение N).

Вот как-то так surprised

Буду рад хотя бы ссылке на полезную инфу.
На всякий случай - большое человеческое спасибо.
К сообщению приложен файл: EURNZD.xls (42.5 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые участники! Пытаюсь решить такую вот задачку (тоже как бы трейдерская wink ), пока не получается, т.к. гуманитарий до мозга костей sad , мобыть поможете чем-нить ? :

Есть таблица (во вложении) с историческими данными по ОДНОМУ инструменту, которые нужно отфильтровать следующим образом - значение Open сегодняшнего дня меньше/больше Close вчерашнего дня на N%

В идеале же - нужно настроить (наверное придётся создавать другую ?) табличку таким образом, чтобы она могла сканить (по DDE например) каждый день МНОЖЕСТВО инструментов.
Не знаю - КАК можно это организовать, но сам механизм видится таким: табличка проверяет входящие данные с нескольких (десятков/сотен) инструментов по вышеуказанному фильтру (открытие сегодняшнего дня меньше/больше закрытия вчерашнего дня на N%), и формирует список этих инструментов в табличку: первый столбец - имя инструмента , второй столбец (Gap) - значение разрыва между Open сегодняшнего дня и Close вчерашнего дня в процентах (которое может фильтроваться пользователем, редактирующим значение N).

Вот как-то так surprised

Буду рад хотя бы ссылке на полезную инфу.
На всякий случай - большое человеческое спасибо.

Автор - Неофит
Дата добавления - 16.02.2012 в 16:15
Неофит Дата: Пятница, 17.02.2012, 09:26 | Сообщение № 39
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Попробовал в автофильтре поставить на столбец Open условие "меньше" (R[-1]C[3)*1,003
Потом попробовал "меньше" (R[-1]C[3)*0,3% - нифига не получилось, наверное где-то туплю sad


Сообщение отредактировал Неофит - Пятница, 17.02.2012, 09:28
 
Ответить
СообщениеПопробовал в автофильтре поставить на столбец Open условие "меньше" (R[-1]C[3)*1,003
Потом попробовал "меньше" (R[-1]C[3)*0,3% - нифига не получилось, наверное где-то туплю sad

Автор - Неофит
Дата добавления - 17.02.2012 в 09:26
Jhonson Дата: Пятница, 17.02.2012, 09:50 | Сообщение № 40
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

Неофит, у Вас в файле числа записаны как текст! Попробуйте заменить точки на запятые!
Из сообщений и файла совершенно не понятно, что же Вам все таки нужно!
К сообщению приложен файл: EURNZD-2-.xls (35.5 Kb)


"Ничто не приносит людям столько неприятностей, как разум."

Сообщение отредактировал Jhonson - Пятница, 17.02.2012, 10:28
 
Ответить
СообщениеНеофит, у Вас в файле числа записаны как текст! Попробуйте заменить точки на запятые!
Из сообщений и файла совершенно не понятно, что же Вам все таки нужно!

Автор - Jhonson
Дата добавления - 17.02.2012 в 09:50
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

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