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

Вход

Регистрация

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

 

= Мир MS Excel/Среднее значение изменяющихся чисел в ячейке - Мир MS Excel

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

Excel 2010
Здравствуйте, в ячейке А1 постоянно открытого файла .xlsm каждые n секунд изменяются значения. Как в ячейке В1 отобразить среднее значение чисел из А1 за промежуток N либо среднее значение последних 20-ти чисел из А1?
К сообщению приложен файл: primer.xlsm (9.0 Kb)
 
Ответить
СообщениеЗдравствуйте, в ячейке А1 постоянно открытого файла .xlsm каждые n секунд изменяются значения. Как в ячейке В1 отобразить среднее значение чисел из А1 за промежуток N либо среднее значение последних 20-ти чисел из А1?

Автор - vlavaden
Дата добавления - 27.05.2017 в 13:04
volony Дата: Суббота, 27.05.2017, 15:39 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
ИМХО, нужно создать макрос, который будет записывать каждое новое значение в виде стандартного числа на отдельный лист, потом выводить среднее значение по этим двум листам, а потом их удалять


Gimme 6 hours to chop down a tree and I'll spend first four sharpening the axe Abraham Lincoln
 
Ответить
СообщениеИМХО, нужно создать макрос, который будет записывать каждое новое значение в виде стандартного числа на отдельный лист, потом выводить среднее значение по этим двум листам, а потом их удалять

Автор - volony
Дата добавления - 27.05.2017 в 15:39
Sandor Дата: Суббота, 27.05.2017, 18:37 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
можно попробовать воспользоваться функцией, реагирующей на изменения на листе (функция должна быть не отдельным модулем, а на самом листе)
со следующими переменными (поэкспериментируйте)

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set tsh2 = Worksheets("имя листа")
Target.Font.ColorIndex = ...
Target.Columns.Column
Target.Value
Target.Rows.Row

End Sub
[/vba]

Таргет, это Ячейка где произошло изменение


Сообщение отредактировал Sandor - Суббота, 27.05.2017, 19:54
 
Ответить
Сообщениеможно попробовать воспользоваться функцией, реагирующей на изменения на листе (функция должна быть не отдельным модулем, а на самом листе)
со следующими переменными (поэкспериментируйте)

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set tsh2 = Worksheets("имя листа")
Target.Font.ColorIndex = ...
Target.Columns.Column
Target.Value
Target.Rows.Row

End Sub
[/vba]

Таргет, это Ячейка где произошло изменение

Автор - Sandor
Дата добавления - 27.05.2017 в 18:37
Pelena Дата: Суббота, 27.05.2017, 18:52 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19185
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Sandor, оформите код тегами с помощью кнопки # в режиме правки поста
[p.s.]Стесняюсь спросить, а что делает Ваш код?[/p.s.]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеSandor, оформите код тегами с помощью кнопки # в режиме правки поста
[p.s.]Стесняюсь спросить, а что делает Ваш код?[/p.s.]

Автор - Pelena
Дата добавления - 27.05.2017 в 18:52
Sandor Дата: Суббота, 27.05.2017, 19:20 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
это вообще-то не программа
а операторы и переменные, которые можно использовать, не мучаясь с синтаксисом

поэтому ЭТО ничего не делает, но дает возможность делать
в момент любого изменения на листе запускается этот модуль
переменная Таргет дает нам возможность работать с этой меняющейся ячейкой
а уж дальше что хотим, то и делаем

и пардоньте, как ни исправлял тегами, получается только хуже
как вариант все в одну строку, т.е. куда менее читабельно


Сообщение отредактировал Sandor - Суббота, 27.05.2017, 19:21
 
Ответить
Сообщениеэто вообще-то не программа
а операторы и переменные, которые можно использовать, не мучаясь с синтаксисом

поэтому ЭТО ничего не делает, но дает возможность делать
в момент любого изменения на листе запускается этот модуль
переменная Таргет дает нам возможность работать с этой меняющейся ячейкой
а уж дальше что хотим, то и делаем

и пардоньте, как ни исправлял тегами, получается только хуже
как вариант все в одну строку, т.е. куда менее читабельно

Автор - Sandor
Дата добавления - 27.05.2017 в 19:20
vlavaden Дата: Суббота, 27.05.2017, 20:35 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
можно попробовать воспользоваться функцией, реагирующей на изменения на листе (функция должна быть не отдельным модулем, а на самом листе)
со следующими переменными (поэкспериментируйте)

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

Спасибо, но ничего не выходит, даже не представляю как это может работать...

Автор - vlavaden
Дата добавления - 27.05.2017 в 20:35
Sandor Дата: Суббота, 27.05.2017, 21:20 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
вот так к примеру

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set tsh = Worksheets(1)
n = n + 1
If n > 20 Then n = n - 20
ss = ss - s(n)
s(n) = Target.Value
ss = ss + s(n)
sr = ss / 20
Application.EnableEvents = False
tsh.Cells(1, 2).Value = sr
Application.EnableEvents = True
End Sub
[/vba]

и нужно добавить в головной модуль проекта
[vba]
Код
Public s(1 To 20) As Double, ss As Double, n As Integer
[/vba]

но этот пример не защищен от Ваших попыток менять еще какие то ячейки хоть руками
будут сбои
можно прописать, чтобы если таргет не 1-я ячейка идти сразу на выход
тогда не будет сбоить
 
Ответить
Сообщениевот так к примеру

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set tsh = Worksheets(1)
n = n + 1
If n > 20 Then n = n - 20
ss = ss - s(n)
s(n) = Target.Value
ss = ss + s(n)
sr = ss / 20
Application.EnableEvents = False
tsh.Cells(1, 2).Value = sr
Application.EnableEvents = True
End Sub
[/vba]

и нужно добавить в головной модуль проекта
[vba]
Код
Public s(1 To 20) As Double, ss As Double, n As Integer
[/vba]

но этот пример не защищен от Ваших попыток менять еще какие то ячейки хоть руками
будут сбои
можно прописать, чтобы если таргет не 1-я ячейка идти сразу на выход
тогда не будет сбоить

Автор - Sandor
Дата добавления - 27.05.2017 в 21:20
Sandor Дата: Суббота, 27.05.2017, 21:26 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
пробую приложить Ваш файл с исправлениями
см
К сообщению приложен файл: _primer.xlsm (15.6 Kb)
 
Ответить
Сообщениепробую приложить Ваш файл с исправлениями
см

Автор - Sandor
Дата добавления - 27.05.2017 в 21:26
vlavaden Дата: Суббота, 27.05.2017, 22:08 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
пробую приложить Ваш файл с исправлениями

Спасибо, вроде работает, осталось протестировать в "боевых" условиях, но это только в понедельник.
 
Ответить
Сообщение
пробую приложить Ваш файл с исправлениями

Спасибо, вроде работает, осталось протестировать в "боевых" условиях, но это только в понедельник.

Автор - vlavaden
Дата добавления - 27.05.2017 в 22:08
Sandor Дата: Суббота, 27.05.2017, 22:16 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
помните про скрытые проблемы
"потрогаете" любую ячейку, щелкнет счетчик )))
спасибо!
 
Ответить
Сообщениепомните про скрытые проблемы
"потрогаете" любую ячейку, щелкнет счетчик )))
спасибо!

Автор - Sandor
Дата добавления - 27.05.2017 в 22:16
vlavaden Дата: Суббота, 27.05.2017, 22:32 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
помните про скрытые проблемы

Да, Вы правы, выдаёт среднее по всем ячейкам...Печально...
 
Ответить
Сообщение
помните про скрытые проблемы

Да, Вы правы, выдаёт среднее по всем ячейкам...Печально...

Автор - vlavaden
Дата добавления - 27.05.2017 в 22:32
Sandor Дата: Суббота, 27.05.2017, 22:33 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
сами не можете поправить?
давайте сейчас дам прогу с исправлениями
сама контролируемая ячейка всегда именно А1 ?


Сообщение отредактировал Sandor - Суббота, 27.05.2017, 22:34
 
Ответить
Сообщениесами не можете поправить?
давайте сейчас дам прогу с исправлениями
сама контролируемая ячейка всегда именно А1 ?

Автор - Sandor
Дата добавления - 27.05.2017 в 22:33
Sandor Дата: Суббота, 27.05.2017, 22:39 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set tsh = Worksheets(1)
a = Target.Columns.Column
If a <> 1 Then GoTo line1:
a = Target.Rows.Row
If a <> 1 Then GoTo line1:
n = n + 1
If n > 20 Then n = n - 20
ss = ss - s(n)
s(n) = Target.Value
ss = ss + s(n)
sr = ss / 20
Application.EnableEvents = False
tsh.Cells(1, 2).Value = sr
Application.EnableEvents = True
line1:
End Sub
[/vba]

от так только на ячейку а1 будет реагировать
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Set tsh = Worksheets(1)
a = Target.Columns.Column
If a <> 1 Then GoTo line1:
a = Target.Rows.Row
If a <> 1 Then GoTo line1:
n = n + 1
If n > 20 Then n = n - 20
ss = ss - s(n)
s(n) = Target.Value
ss = ss + s(n)
sr = ss / 20
Application.EnableEvents = False
tsh.Cells(1, 2).Value = sr
Application.EnableEvents = True
line1:
End Sub
[/vba]

от так только на ячейку а1 будет реагировать

Автор - Sandor
Дата добавления - 27.05.2017 в 22:39
Pelena Дата: Суббота, 27.05.2017, 22:45 | Сообщение № 14
Группа: Админы
Ранг: Местный житель
Сообщений: 19185
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Не уверена, но где-то мелькало, что если данные подгружаются автоматом (через DDE), то событие Worksheet_Change не работает

осталось протестировать в "боевых" условиях
Надеюсь, отпишетесь о результатах?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНе уверена, но где-то мелькало, что если данные подгружаются автоматом (через DDE), то событие Worksheet_Change не работает

осталось протестировать в "боевых" условиях
Надеюсь, отпишетесь о результатах?

Автор - Pelena
Дата добавления - 27.05.2017 в 22:45
vlavaden Дата: Суббота, 27.05.2017, 22:47 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
от так только на ячейку а1 будет реагировать

Спасибо, ещё раз, теперь всё как надо!
 
Ответить
Сообщение
от так только на ячейку а1 будет реагировать

Спасибо, ещё раз, теперь всё как надо!

Автор - vlavaden
Дата добавления - 27.05.2017 в 22:47
Sandor Дата: Суббота, 27.05.2017, 22:55 | Сообщение № 16
Группа: Пользователи
Ранг: Участник
Сообщений: 65
Репутация: -4 ±
Замечаний: 0% ±

Excel 2010
если данные подгружаются автоматом (через DDE), то событие Worksheet_Change не работает

вполне может быть
но помню когда-то давно мы автоматом анализироваали котировки
а шли они через DDE
как-то таки решили эту проблему
точно уж не помню
надо в реале побаловаться
 
Ответить
Сообщение
если данные подгружаются автоматом (через DDE), то событие Worksheet_Change не работает

вполне может быть
но помню когда-то давно мы автоматом анализироваали котировки
а шли они через DDE
как-то таки решили эту проблему
точно уж не помню
надо в реале побаловаться

Автор - Sandor
Дата добавления - 27.05.2017 в 22:55
vlavaden Дата: Суббота, 27.05.2017, 23:15 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Надеюсь, отпишетесь о результатах?

Это только в понедельник.
 
Ответить
Сообщение
Надеюсь, отпишетесь о результатах?

Это только в понедельник.

Автор - vlavaden
Дата добавления - 27.05.2017 в 23:15
vlavaden Дата: Понедельник, 29.05.2017, 19:56 | Сообщение № 18
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Надеюсь, отпишетесь о результатах?

Подсказали такой вот код, работает хорошо, но округляет до сотых, можно ли подправить, чтобы точность была 4-5 знаков после запятой?
'в ОБЩИЙ модуль
[vba]
Код
Public iCount As Integer
Public iVal As Double
[/vba]
'в модуль ЛИСТА
[vba]
Код

Private Sub Worksheet_Calculate()
iCount = iCount + 1
iVal = iVal + Range("A1").Value
If iCount = 20 Then
    Range("B1").Value = Round(iVal / iCount, 2)
    iCount = Empty
    iVal = Empty
End If
End Sub
[/vba]
 
Ответить
Сообщение
Надеюсь, отпишетесь о результатах?

Подсказали такой вот код, работает хорошо, но округляет до сотых, можно ли подправить, чтобы точность была 4-5 знаков после запятой?
'в ОБЩИЙ модуль
[vba]
Код
Public iCount As Integer
Public iVal As Double
[/vba]
'в модуль ЛИСТА
[vba]
Код

Private Sub Worksheet_Calculate()
iCount = iCount + 1
iVal = iVal + Range("A1").Value
If iCount = 20 Then
    Range("B1").Value = Round(iVal / iCount, 2)
    iCount = Empty
    iVal = Empty
End If
End Sub
[/vba]

Автор - vlavaden
Дата добавления - 29.05.2017 в 19:56
Pelena Дата: Понедельник, 29.05.2017, 20:24 | Сообщение № 19
Группа: Админы
Ранг: Местный житель
Сообщений: 19185
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
За округление отвечает функция Round, измените второй аргумент с 2 на 4 или 5


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗа округление отвечает функция Round, измените второй аргумент с 2 на 4 или 5

Автор - Pelena
Дата добавления - 29.05.2017 в 20:24
vlavaden Дата: Понедельник, 29.05.2017, 20:36 | Сообщение № 20
Группа: Пользователи
Ранг: Участник
Сообщений: 76
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
За округление отвечает функция Round, измените второй аргумент с 2 на 4 или 5

Спасибо, очевидного не увидел.
 
Ответить
Сообщение
За округление отвечает функция Round, измените второй аргумент с 2 на 4 или 5

Спасибо, очевидного не увидел.

Автор - vlavaden
Дата добавления - 29.05.2017 в 20:36
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Среднее значение изменяющихся чисел в ячейке (Формулы/Formulas)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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