Страницы: 1
RSS
Цвет ячейки в зависимости от значения в другой ячейке и сигнал.
 
Здравствуйте! Вот такая у меня задача. В таблицу на разные листы  в колонки K и L вводятся с внешнего источника данные. В ячейках F2 и F3 идет их подсчет, в ячейке  F7 идет подсчет индекса по формуле. И вот сама задача.    
 
Если значение индекса переходит из отрицательного в положительное и становиться более  1% то ячейка меняет цвет с красного на зеленый. И наоборот на красный с зеленого если значение индекса падает и становиться менее -1%. При этих условиях выдаются отличительные друг от друга звуковые сигналы, которые можно отключать на соответствующей вкладке (от куда поступил сигнал).  Также нужно чтоб таблички с разных листов дублировались на первом листе.    
 
Возможно ли такое сделать, а то все перелапатил уже. Заранее благодарен за помощь.    
Так как файл более 100к, то залил сюда http://rghost.ru/1011946 2.2 Мб
 
по первой части, понятно, здесь УФ поможет, а насчёт сигнала не знаю как делать
[*]<a href="mailto:info@ledrex\";>
 
Были решения на Планете...
 
УФ в лист Итог вставил (остальные листы можно сделать по аналогии). Как быть со звуком не знаю.  
 
ФАЙЛ НЕ ОРИГИНАЛЬНЫЙ (я там нижние строки поудалял, чтобы на форум можно было для примера прицепить).
 
{quote}{login=Senya}{date=18.02.2010 04:04}{thema=}{post}УФ в лист Итог вставил (остальные листы можно сделать по аналогии). Как быть со звуком не знаю.  
 
ФАЙЛ НЕ ОРИГИНАЛЬНЫЙ (я там нижние строки поудалял, чтобы на форум можно было для примера прицепить).{/post}{/quote}  
 
Спасибо большое! Т.е. можно ячейки с первого листа просто скопировать на нужные листы? Я так сделал работает. Надеюсь сами ячейки править уже не надо?  
 
Со звуком я нашел вот тему, там есть решение.    
http://www.planetaexcel.ru/forum.php?thread_id=6505  
Но у меня не получилось с него выжать звук, что-то у меня может в настройках не так.
 
Пример со звуком что-то не открывает, но можно так, привязываясь к процентам:  
На лист клиента:  
Private Sub Worksheet_Calculate()  
If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)"
End Sub
 
{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Пример со звуком что-то не открывает, но можно так, привязываясь к процентам:  
На лист клиента:  
Private Sub Worksheet_Calculate()  
If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)"
End Sub{/post}{/quote}  
 
Вы вот этот пример смотрели?  
http://www.planetaexcel.ru/docs/forum_upload/post_35909.rar
 
{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Пример со звуком что-то не открывает, но можно так, привязываясь к процентам:  
На лист клиента:  
Private Sub Worksheet_Calculate()  
If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)"
End Sub{/post}{/quote}  
 
Сейчас с цветом все сделаю. Потом звуком займусь. Обязательно отпишусь. Спасибо за помощь.
 
{quote}{login=MAPh}{date=18.02.2010 04:45}{thema=Re: Re: Re: }{post}{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Вы вот этот пример смотрели?  
http://www.planetaexcel.ru/docs/forum_upload/post_35909.rar{/post}{/quote}  
Спасибо, может пригодится, но у меня попроще, всё в одну строку умещается...
 
{quote}{login=Hugo}{date=18.02.2010 04:53}{thema=Re: Re: Re: Re: }{post}{quote}{login=MAPh}{date=18.02.2010 04:45}{thema=Re: Re: Re: }{post}{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Вы вот этот пример смотрели?  
http://www.planetaexcel.ru/docs/forum_upload/post_35909.rar{/post}{/quote}  
Спасибо, может пригодится, но у меня попроще, всё в одну строку умещается...{/post}{/quote}  
 
Я попробую спасибо, т.е. там есть возможность при нажатии на кнопку выкл. звук если что? Чтоб не звучало с не нужных листов, если там поступают данные, а они пока не нужны.
 
{quote}{login=Hugo}{date=18.02.2010 04:53}{thema=Re: Re: Re: Re: }{post}{quote}{login=MAPh}{date=18.02.2010 04:45}{thema=Re: Re: Re: }{post}{quote}{login=Hugo}{date=18.02.2010 04:40}{thema=Re: Re: }{post}Вы вот этот пример смотрели?  
http://www.planetaexcel.ru/docs/forum_upload/post_35909.rar{/post}{/quote}  
Спасибо, может пригодится, но у меня попроще, всё в одну строку умещается...{/post}{/quote}  
 
Я попробую спасибо, т.е. там есть возможность при нажатии на кнопку выкл. звук если что? Чтоб не звучало с не нужных листов, если там поступают данные, а они пока не нужны.  
 
Верхний пост что-то без цитирования получился.
 
Что-то не удается процетировать. )))  
 
Я попробую спасибо, т.е. там есть возможность при нажатии на кнопку выкл. звук если что? Чтоб не звучало с не нужных листов, если там поступают данные, а они пока не нужны. Верхний пост что-то без цитирования получился.
 
Можно чек-бокс на листе поставить и проверять его. Может надо не пересчёт обрабатывать, а изменение листа, а то у меня сейчас и на открытие других файлов звук пошёл, я и не понял сразу :)
 
{quote}{login=Hugo}{date=18.02.2010 05:08}{thema=Re: Re: Re: Re: Re: Re: }{post}Можно чек-бокс на листе поставить и проверять его. Может надо не пересчёт обрабатывать, а изменение листа, а то у меня сейчас и на открытие других файлов звук пошёл, я и не понял сразу :){/post}{/quote}  
 
Там есть другие значения которые меняются. Поэтому надо на изменение одной ячейки листа, а так у меня там оркестр будет. :) А листов таких десяток. По инету ищу, пока нет, может ни кому не надо было.
 
Можно отслеживать только конкретную ячейку.
 
Вернее так, отслеживать надо диапазон, т.к. в процентах сама формула не меняется:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Intersect(Target, Range("K:L")) Is Nothing Then Exit Sub  
If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)"
End Sub  
 
Но тогда, если данные меняются по формуле, работать не будет. Только если заносить кодом. Сейчас проверю...
 
Да, вручную и кодом работает.
 
{quote}{login=Hugo}{date=18.02.2010 05:56}{thema=Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: }{post}Да, вручную и кодом работает.{/post}{/quote}  
 
Спасибо! Попробую, как только разберусь с цветом, уже в глазах рябит от этих табличек. )))
 
{quote}{login=Senya}{date=18.02.2010 04:04}{thema=}{post}УФ в лист Итог вставил (остальные листы можно сделать по аналогии). Как быть со звуком не знаю.  
 
ФАЙЛ НЕ ОРИГИНАЛЬНЫЙ (я там нижние строки поудалял, чтобы на форум можно было для примера прицепить).{/post}{/quote}  
 
По формуле цвет меняется при условии <-0.01 на красный и при >0.01 на зеленый. В промежутке он белый, а нельзя ли так чтобы когда ячейка красная то и остается красной пока не будет >0.01 и если была зеленая то и остается зеленой до значения <-0,01
 
{quote}{login=Senya}{date=18.02.2010 04:04}{thema=}{post}УФ в лист Итог вставил (остальные листы можно сделать по аналогии). Как быть со звуком не знаю.  
 
ФАЙЛ НЕ ОРИГИНАЛЬНЫЙ (я там нижние строки поудалял, чтобы на форум можно было для примера прицепить).{/post}{/quote}  
 
 
По формуле цвет меняется при условии <-0.01 на красный и при >0.01 на зеленый. В промежутке он белый, а нельзя ли так чтобы когда ячейка красная то и остается красной пока не будет >0.01 и если была зеленая то и остается зеленой до значения <-0,01
 
Столбец А:А
 
{quote}{login=VovaK}{date=18.02.2010 08:22}{thema=}{post}Столбец А:А{/post}{/quote}  
 
Спасибо! Вот только я не понял по какому правилу они созданы, как мне такое сделать в другой книге? В условном форматировании нет ни одного правила в файле.
 
{quote}{login=MAPh}{date=18.02.2010 08:49}{thema=Re: }{post}{quote}{login=VovaK}{date=18.02.2010 08:22}{thema=}{post}Столбец А:А{/post}{/quote}  
 
Спасибо! Вот только я не понял по какому правилу они созданы, как мне такое сделать в другой книге? В условном форматировании нет ни одного правила в файле.{/post}{/quote}  
 
В этой книге.
 
Открой редактор VBA (AltF11) и на листе 1 процедура обработки событий:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
 If Not Intersect(Target, Range("A:A")) Is Nothing Then  
  If IsNumeric(Target.Value) Then  
    If Target.Value < -0.01 Then  
      With Target.Offset(0, 1).Interior  
       .ColorIndex = 49  
       .Pattern = xlSolid  
       .PatternColorIndex = xlAutomatic  
      End With  
    ElseIf Target.Value > 0.01 Then  
      With Target.Offset(0, 1).Interior  
       .ColorIndex = 4  
       .Pattern = xlSolid  
       .PatternColorIndex = xlAutomatic  
      End With  
'     Else  
    '  Target.Offset(0, 1).Interior.ColorIndex = xlNone  
    End If  
  Else  
    Target.Offset(0, 1).Interior.ColorIndex = xlNone  
  End If  
  Target.Select  
End If  
End Sub  
 
Здесь диапазон "A:A" можно указать любой другой на листе где установлена эта процедура, условие в строке  If Target.Value < -0.01 Then и  ElseIf Target.Value > 0.01 Then и наконец окрашивается соседняя ячейка (Offset(0,1))  
 
With Target.Offset(0, 1).Interior  
       .ColorIndex = 49  
       .Pattern = xlSolid  
       .PatternColorIndex = xlAutomatic  
      End With
 
{quote}{login=VovaK}{date=18.02.2010 10:39}{thema=}{post}Открой редактор VBA (AltF11) и на листе 1 процедура обработки событий: {/post}{/quote}  
 
Спасибо! Теперь думаю разберусь. Я просто хотел через условное форм., функцию какую-нибудь вписать, но возможно так и лучше. Заодно и тему поизучаю. )
 
{quote}{login=VovaK}{date=18.02.2010 10:39}{thema=}{post}Открой редактор VBA (AltF11) и на листе 1 процедура обработки событий:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
 If Not Intersect(Target, Range("A:A")) Is Nothing Then  
  If IsNumeric(Target.Value) Then  
    If Target.Value < -0.01 Then  
      With Target.Offset(0, 1).Interior  
       .ColorIndex = 49  
       .Pattern = xlSolid  
       .PatternColorIndex = xlAutomatic  
      End With  
    ElseIf Target.Value > 0.01 Then  
      With Target.Offset(0, 1).Interior  
       .ColorIndex = 4  
       .Pattern = xlSolid  
       .PatternColorIndex = xlAutomatic  
      End With  
'     Else  
    '  Target.Offset(0, 1).Interior.ColorIndex = xlNone  
    End If  
  Else  
    Target.Offset(0, 1).Interior.ColorIndex = xlNone  
  End If  
  Target.Select  
End If  
End Sub  
 
Здесь диапазон "A:A" можно указать любой другой на листе где установлена эта процедура, условие в строке  If Target.Value < -0.01 Then и  ElseIf Target.Value > 0.01 Then и наконец окрашивается соседняя ячейка (Offset(0,1))  
 
With Target.Offset(0, 1).Interior  
       .ColorIndex = 49  
       .Pattern = xlSolid  
       .PatternColorIndex = xlAutomatic  
      End With{/post}{/quote}  
 
Заменил диапазон А:А на ячейку, у меня там формула =ЕСЛИ(F3=0;"";(F2/F3-1))  
И вот с формулой не хочет работать, а если туда вбивать цифры  то все нормально. Как заставить считать?
 
Вот подправил, но что-то не так. Не работает.  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Not Intersect(Target, Range("F14")) Is Nothing Then  
Range("F14").FormulaLocal = "=IF(F3=0;"";(F2/F3-1))"  
If IsNumeric(Target.Value) Then  
If Target.Value < -0.01 Then  
With Target.Offset(2, 0).Interior  
.ColorIndex = 3  
.Pattern = xlSolid  
.PatternColorIndex = xlAutomatic  
End With  
ElseIf Target.Value > 0.01 Then  
With Target.Offset(2, 0).Interior  
.ColorIndex = 4  
.Pattern = xlSolid  
.PatternColorIndex = xlAutomatic  
End With  
' Else  
' Target.Offset(2, 0).Interior.ColorIndex = xlNone  
End If  
Else  
Target.Offset(2, 0).Interior.ColorIndex = xlNone  
End If  
Target.Select  
End If  
End Sub
 
Нужно правильно выбирать событие    
Change - изменение значение в ячейке  
SelectionChange - изменение выбора ячейки  
Сalculate - пересчет листа (очевидно то что Вам нужно)  
 
Почитайте в Google "VBA обработка событий"
 
{quote}{login=Hugo}{date=18.02.2010 05:54}{thema=Re: Re: Re: Re: Re: Re: Re: Re: Re: }{post}Вернее так, отслеживать надо диапазон, т.к. в процентах сама формула не меняется:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Intersect(Target, Range("K:L")) Is Nothing Then Exit Sub  
If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "c:\WINDOWS\Media\chimes.wav" & """)"
End Sub  
 
Но тогда, если данные меняются по формуле, работать не будет. Только если заносить кодом. Сейчас проверю...{/post}{/quote}  
 
Вот так прописал. Но получается, что звук идет при каждом изменении диапазона K:L. А нельзя ли так, чтобы звук раздавался только один раз когда попадает в зону первого условия или второго и следующий раз тогда когда будет выход из зоны и новый вход? Или может тогда лучше сделать кнопку отключения и включения макроса? Правда тут нужно две кнопки, одна на зону -, другая на +.  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Intersect(Target, Range("K:L")) Is Nothing Then Exit Sub  
If [f7] <= -0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "d:\WINDOWS\Media\chimes.wav" & """)"
If [f7] >= 0.01 Then ExecuteExcel4Macro "SOUND.PLAY(,""" & "d:\WINDOWS\Media\chimes.wav" & """)"
End Sub
Страницы: 1
Читают тему
Наверх